SQLDriverConnect
-
C++ Visual 2008 Express,
Projekt: Multi-byte-Zeichensatz
ODBC - Verbindung zur MS Access Datenbankseid einiger Zeit bin ich am experimentieren.
Wenn ich in der Funktion 'SQLDriverConnect' den "InConnectionString" direkt hineinschreibe:
bool ConnectionString(LPCTSTR InConnectionString) {... SQLTCHAR OutConnectString[1024]; nRet = SQLDriverConnect (m_hDBC, NULL, (SQLTCHAR*)"Driver=Microsoft Access Driver (*.mdb);DBQ=C:\db1.mdb;UID=Admin",//InConnectionString _tcsclen("Driver=Microsoft Access Driver (*.mdb);DBQ=C:\db1.mdb;UID=Admin"), (SQLTCHAR*)OutConnectString, sizeof(OutConnectString), &shortRes, SQL_DRIVER_NOPROMPT); ... }
dann funktioniert die Verbindung!
Wenn ich jedoch den InConnectionstring mit einer Funktion übergebe nicht:
int ConString (LPCTSTR Path, LPCTSTR User = TEXT("")) {TCHAR str[256] = ""; _stprintf_s(str,sizeof(str), "Driver =Microsoft Access Driver(*.mdb);DBQ=%s;UID=%s;",Path,User); return ::ConnectionString(str); };
und
bool ConnectionString(LPCTSTR InConnectionString) {... SQLTCHAR OutConnectString[1024]; nRet = SQLDriverConnect (m_hDBC, NULL, (SQLTCHAR*)[b]InConnectionString[/b], _tcsclen([b]InConnectionString[/b]), (SQLTCHAR*)OutConnectString, sizeof(OutConnectString), &shortRes, SQL_DRIVER_NOPROMPT); ... }
Es wird somit vermutlich der Wert falsch übergeben?
Wenn ich im Debugger hineinschaue, steht der Wert 'augenscheinlich' korrekt im InConnectionstring:
WERT= 0x0012f8d8 "Driver =Microsoft Access Driver(*.mdb);DBQ=C:\db1.mdb;UID=Admin;"Es gibt sicherlich bessere/modernere Möglichkeiten - ich will nur gern verstehen warum es nicht funktioniert.
Vielen Dank für eure Unterstützung