SQLDriverConnect



  • 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


Anmelden zum Antworten