ODBC-Adapter mit falschem SQL-Statement erzeugt keine Exception
-
Hallo Experten,
ich greife via ODBC auf eine Datenbank zu. Dieses klappt ohne Probleme. Wenn ich nun allerdings ein fehlerhaftes SQL-Statement nutze, dann bekomme ich zwar beim Debuggen (wenn ich die CLR-Exceptions in VC++2008 Express aktiviert habe) die Rückmeldung des ODBC-Treibers (z.B. Spalte fehlerhaft), bekomme aber im Programm über den TRY/CATCH-Block keine Exception. Das Programm bleibt daher leider einfach stehen ....
Wer hat eine Idee, was ich tun muss, um die Exception zu erhalten ?? Vielen Dank im Voraus.
String ^ZUGANG;
OdbcConnection ^VERBINDUN G;
ZUGANG = "DSN=DSN;UID=USER;PWD=DEMO;";
VERBINDUNG = gcnew OdbcConnection (ZUGANG);
VERBINDUNG->Open();DataSet ^ds;
OdbcDataAdapter ^adapter;
String ^connectionString = "SELECT FELD FROM TABELLE WHERE ZAHL=A";try
{
ds = gcnew DataSet();
adapter = gcnew OdbcDataAdapter(connectionString ,VERBINDUNG);
ds->Tables->Add("TABLE");
adapter->Fill(ds,"TABLE"); //<----- FEHLERZEILE
DataRow ^dr = ds->Tables["TABLE"]->Rows[0];
}
catch (Exception ^E) {}
-
Moin,
ganz schlecht
catch (Exception ^E) {}
immer die Exception ausgeben lassen
catch(Exception ^e) { Console::WriteLine(e->Message); }
dann dürfte Dir Dein Programm zumindest eine Fehlermeldung geben und Dir damit sagen was schief läuft
hand, mogel
-
Und ich würde das öffnen der DB auch in den try-Block reinehmen, sonst schmiert Dir das Programm ab wenn die DB nicht ordentlich geöffnet werden kann...
LG Solick
-
Vielen Dank für den Tipp, aber leider komme ich ja gar nicht so weit, dass eine Exception erzeugt wird....
Beim Debuggen erhalte ich folgende Meldung:
Eine Ausnahme (erste Chance) des Typs "System.Data.Odbc.OdbcException" ist in System.Data.dll aufgetreten.
Zusätzliche Informationen: ERROR [42S22] [NORD-INFORMATIK][Server]Spalte nicht gefunden A
Leider führt die o.g. Exception nicht dazu, dass das Programm in den CATCH-Block springt ...
-
Fang mal zusätzlich eine OdbcException ab...
catch(OdbcException ^e) { Console::WriteLine(e->Message); } catch(Exception ^e) { Console::WriteLine(e->Message); }
-
Habe ich leider auch schon probiert ...
Hat auch nicht geholfen ...