Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Mit Oledb auf Accessdatenbank zugreifen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.05.2003, 13:33 Uhr
~gast
Gast


Hi,

ich versuche vergeblich mit oledb auf eine Accessdatenbank zuzugreifen.
Irgendwie bekomme ich bein initialisieren immer den Fehler DB_SEC_E_AUTH_FAILED, weiß aber nicht warum.
Wenn ich auf eine ODBC Datenquelle zugreife, die mit der Datenbank
verbunden ist klappts einwandfrei.

Hier mal ein Stück Code:

C++:
IDBProperties*    pIDBProperties = NULL;
const ULONG        nProps = 4;
DBPROP            InitProperties[nProps];
DBPROPSET        rgInitPropSet;
WCHAR*            wDaten;
int                iSize;
    
iSize = MultiByteToWideChar(CP_ACP,0,szDatenquelle,-1,NULL,0);
wDaten = new WCHAR[iSize];
if (MultiByteToWideChar(CP_ACP,0,szDatenquelle,-1,wDaten,iSize) == NULL)
{
    printf("Datenquellenumwandlungsfehler");
    return -1;
}

for (ULONG i=0; i<nProps; i++)
{
    VariantInit(&InitProperties[i].vValue);
    InitProperties[i].dwOptions = DBPROPOPTIONS_REQUIRED;
    InitProperties[i].colid = DB_NULLID;
}

InitProperties[0].dwPropertyID = DBPROP_INIT_PROMPT;
InitProperties[0].vValue.vt = VT_I2;
InitProperties[0].vValue.iVal = DBPROMPT_NOPROMPT;

InitProperties[1].dwPropertyID = DBPROP_AUTH_USERID;
InitProperties[1].vValue.vt = VT_BSTR;
InitProperties[1].vValue.bstrVal = SysAllocString(OLESTR(""));

InitProperties[2].dwPropertyID = DBPROP_INIT_DATASOURCE;
InitProperties[2].vValue.vt = VT_BSTR;
InitProperties[2].vValue.bstrVal = SysAllocString(wDaten);

InitProperties[3].dwPropertyID = DBPROP_AUTH_PASSWORD;
InitProperties[3].vValue.vt = VT_BSTR;
InitProperties[3].vValue.bstrVal = SysAllocString(OLESTR(""));

rgInitPropSet.guidPropertySet = DBPROPSET_DBINIT;
rgInitPropSet.cProperties = nProps;
rgInitPropSet.rgProperties = InitProperties;


if (pIDBInitialize->QueryInterface(IID_IDBProperties,(void**)&pIDBProperties) != S_OK)
{
    printf("Eigenschafteninterface konnte nicht geladen werden!");
    return -1;
}

if (pIDBProperties->SetProperties(1, &rgInitPropSet) != S_OK)
{
    printf("Eigenschaften konnten nicht gesetzt werden!");
    return -1;
}

pIDBProperties->Release();

if (pIDBInitialize->Initialize() != S_OK)//Hier tritt Fehler auf
{
    printf("Initialisierung fehlgeschlagen!");
    return -1;
}


pIDBInitialize wurde folgendermaßen initialisiert:

C++:
if (CoInitialize(0) != S_OK)
{
    printf("Konnte COM nicht initialisieren!");
    return false;
}
        
CLSID msjet;
CLSIDFromProgID(L"Microsoft.Jet.OLEDB.4.0",&msjet);

if (CoCreateInstance(msjet, NULL, CLSCTX_INPROC_SERVER,
         IID_IDBInitialize ,(void**)&pIDBInitialize) != S_OK)
{
    printf("MSDA Instanz konnte nicht erstellt werden!");
    return false;
}



Ich hoffe ihr könnt mir helfen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.05.2003, 13:44 Uhr
Christian
C/C++ Master
(Operator)


Hi!

Ich weiß nicht, ob dir helfen kann, da ich eigentlich nur die OLE DB Consumer Templates verwende. Aber das Eigenschaften setzen sollte dort genauso funktionieren. Wieso setzt du denn die Eigenschaften für den User und das Passwort, wenn man sich scheinbar sowieso anonym anmelden darf?
--
Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.05.2003, 07:39 Uhr
~gast
Gast


das war für später, ich habs mittlerweile durch ne Variable ersetzt die der
Benutzer eingeben kann.

Allerdings hing der Fehler auch damit zusammen. Wenn ich als User "Admin"
eingebe, gehts aufeinmal komischerweise. Obwohl es vorher irgendwie
nicht ging und ich nirgendwo einen Benutzer Admin habe, weder in der
Datenbank noch im Betriebssytem.

...Naja, hauptsache es läuft.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.05.2003, 13:26 Uhr
~Christian
Gast


Hi!

Das ist aber seltsam, denn ich habe es gerade bei mir mit einer Access DB getestet und ich habe keinen Benutzer und kein Passwort angegeben. Ich komme ohne irgendwelche gesetzten Eigenschaften rein.

Grüße, Christian
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.05.2003, 13:59 Uhr
~gast
Gast


Ich habs jetzt nochmal hier auf der Arbeit ohne Benutzer probiert und es
ging auch nicht. Merkwürdig....

Ich hab mir eigentlich nur ne Access DB erstellt und darin ne Tabelle
mit 2 Spalten.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: