?
C++ Visual 2008 Express,
Projekt: Multi-byte-Zeichensatz
ODBC - Verbindung zur MS Access Datenbank
seid 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