Connectionsting wo eingeben? Hilfe!
-
Jens Bond schrieb:
open("Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;" )
oder ist das falsch? wenn ich auch ne access db zugreifen will. Weil so geht es net.
Du meinst sicher CDatabase::Open.
MSDN schrieb:
virtual BOOL Open( LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE,LPCTSTR lpszConnect = “ODBC;”, BOOL bUseCursorLib = TRUE );
->
Open("",FALSE,FALSE,"hier der Conn-Str"); //connStr: "ODBC;DRIVER= ...
So muss das aussehen. Und das funzt, weil damit arbeite ich gerade die ganze Zeit^^.
OpenEx wäre mir hier lieber, aber das macht mir irgendwie dauernd Probleme. Damit habe ich nicht in jedem Fall Verbindung bekommen(greife hier auf Oracle,MSSQL und MySQL zu)
-
Pellaeon schrieb:
OpenEx wäre mir hier lieber, aber das macht mir irgendwie dauernd Probleme. Damit habe ich nicht in jedem Fall Verbindung bekommen(greife hier auf Oracle,MSSQL und MySQL zu)
Das macht nicht nur dir Probleme.
-
Jo weist du woran das liegt? Der Vorteil bei OpenEx der mir gefällt: wenn keine Verbindung zustande kommt, kann man den automatischen ODBC_Dialog unterdrücken. Bei Open kommt der ja leider immer. Aber was bringts wenn OpenEx dafür die Verbinfung nicht hinbekommt, wenn es eigentlich gehen müsste ... .
-
Woran es liegt weiß ich nicht. Aber wie man es relativ gut umgehen kann.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-116639.html
-
estartu_de schrieb:
Es geht auch ohne CDatabase - denn um das Objekt zu nutzen, musst du es auch dem Recordset geben.
CDeinRecordset recSet(dasDatabaseObjekt);
In deiner Recordsetklasse hast du die Funktion GetDefaultConnect. Da drin steht der Connectionstring.
ja genau da steht er dirnnen hatte ich auch so gedacht. Aber leider weiß ich da net genau wo. Habe alle mir logisch erscheinen Sachen schon ausprobiert ein Codeschnippel wäre da nicht schlecht.
CString artikel::GetDefaultConnect() { return _T("ODBC;DSN=datenbank"); }
Bisher sieht es so aus. Jetzt will ich das ja automatisieren. Aber irgendwie egal wo ich den String eingeben Es kommen immer fehler.
-
Jens Bond schrieb:
CString artikel::GetDefaultConnect() { return _T("ODBC;DSN=datenbank"); }
Bisher sieht es so aus. Jetzt will ich das ja automatisieren. Aber irgendwie egal wo ich den String eingeben Es kommen immer fehler.
Das ist die richtige Stelle. Zeig doch mal deine Versuche.
-
CString artikel::GetDefaultConnect() { return _T(""Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;" "); }
so habe ich dann das gemacht. Aber es funzt net!
-
Das dürfte gar nicht erst compilieren, weil du " statt \" in einem String verwendet hast.
Mach mal:CString artikel::GetDefaultConnect() { return _T("\"Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;\" "); }
-
da kommt dann ein Debug assertion fehler
File afxdb.inl
Line: 86komisch komisch!
-
schreib mal am anfang des Strings "ODBC;"
-
return _T("ODBC;""\"Driver={Microsoft Access Driver (*.mdb)};Dbq=datenbank.mdb;Uid=;Pwd=;\" ");
also so?
dann kommt die aufforderung eine datasource auszuwählen und dann wieder der fehler.
-
Werden die Anführungszeichen im Connection-String überhaupt benötigt? Wenn nicht, dürfte das hier richtiger sein:
return _T("Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=; ");
-
so habe ich es schon probiert
-
ajo ich sehen schon ihr könnt mir auch nicht wieterhelfen.
Aber irgendwer muss doch schonmal das gleiche Problem gehabt haben!
Edit: Wenn ich dann debugge kommt an der stelle. variable benötigt Stack-Rahmen
-
Jens Bond schrieb:
Edit: Wenn ich dann debugge kommt an der stelle. variable benötigt Stack-Rahmen
Du musst noch einmal F10 drücken, dann sollte die Variable angezeigt werden können...
-
kann es irgendwer sich mal angucken?
-
return _T("ODBC;Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=; ");
Da fehlt wahrscheinlich ein escape. etwa so:
return _T("ODBC;Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\mydatabase.mdb;Uid=Admin;Pwd=; ");
Kurt
-
tja natürlich lag es auch da dran nicht