Datenbank Fehler abfangen
-
Hallo
Ich habe ein kleines Problem mit der Datenbankabfrage. Ist die Datenbank erreichbar, dann klappt alles. ISt sie aber nicht erreichbar (Netzwerkprobleme, Serverausfall), dann erscheint das Fenster für die ODBC Verbindungen und damit bleibt das Program dann stehen. Mit OpenEx (weiter unten) kann man zwar das Fenster deaktivieren, aber dafür kommt dann eine Fehlermeldung mit "abnormal Programm Termination". Wie kann ich das verhindern?
dbnumber.Open(_T(sODBCName), false, false, _T("ODBC;DSN=WSZ;UID=XYZ;PWD=XYZ")); if(dbnumber.IsOpen()) { number.Open(CRecordset::snapshot, strselect.c_str()); for (int i=0; i<10; i++) { number.AddNew(); number.m_LOT="ZT234567"; number.m_WAFER_ID="65"; number.m_SLOT="56"; number.m_TO_OPERATION="1234"; number.m_IMPLANT_OPERATION="1243"; number.Update(); } }
dbnumber.OpenEx( _T( "DSN=TEST" ), CDatabase::openReadOnly | CDatabase::noOdbcDialog)
-
hi,
try { Dein connect } catch (CDBException) { MessageBox("Dein Fehler"); }
-
Da passiert leider das gleiche.
try { dbnumber.OpenEx( sODBCName, CDatabase::noOdbcDialog ); } catch(CDBException) { cout << "Fehler" << endl; }
-
try { dbnumber.OpenEx( sODBCName, CDatabase::noOdbcDialog ); } catch(...) { cout << "Fehler" << endl; }
Und so?
-
Das geht. Aber warum ist mir überhaupt nicht klar.
Danke
-
Zu früh gefreut. Jetzt kommt immer als Ausgabe der Fehler, ob die Datenbank da ist oder nicht. Langsam verzweifele ich.
-
Wie wär's mit:
try { CMyDB.Open(...); } catch(CDBException* pEx) { cout << pEx->m_strError << endl; }
Happosai
[ Dieser Beitrag wurde am 09.01.2003 um 18:14 Uhr von Happosai editiert. ]
[ Dieser Beitrag wurde am 09.01.2003 um 18:15 Uhr von Happosai editiert. ]
-
Hallo
Das klappt leider auch nicht so wie es soll. Wenn ich die DB mit Open öffne, dann kann ich nicht den ODBC Dialog unterbinden (wenn die DB nicht da ist, kommt er ja). Oder geht es doch?
Mit OpenEx kann ich den ODBC Dialog unterbinden, aber da kommt in jedem Fall die Meldung, daß die DB nicht da ist.
try { dbnumber.Open(sODBCName); } catch(CDBException* pEx) { cout << pEx->m_strError << endl; }
-
Nun geht es so halbwegs, hatte noch eine Fehler. Ich kann also mit der Funktion OpenEx den ODBC Dialog unterdrücken. Aber ich muss das Passwort und solche Info´s mit übergeben, dies klappt meines Wissens aber nur mit DB.Open(...), oder auch mit DB.OpenEx(..)?
Michelle
-
Hat sich alles geklärt, ich habe es gefunden.