CRecordset -> Exception ohne Text
-
const char* sqlStatement = "SELECT * FROM address"; try { CRecordset query(&dBase); query.Open(CRecordset::snapshot,sqlStatement); query.Close(); } catch (CDBException* ex) { AfxMessageBox(ex->m_strError); ex->Delete(); }
Das wirft ne Exception, leider ohne textlichen Inhalt. Hatte wer sowas schon mal?
Datenbasis ist geöffnet und wenn dort das SQL-Statement absetze kommt keine Exception. Bringt ja nur nix, da CDatabase keine Ergebnisse auswerten kann ... .an der stelle in CRecordset hauts ihn raus
// Fetch the first row of data MoveNext();
Kann ich nix mit anfangen o_O
-
[quote=MSDN]Caution Calling any of the Move functions throws an exception if the recordset has no records. To determine whether the recordset has any records, call IsBOF and IsEOF.
[/quote]Hast du etwa vergessen, das zu überprüfen? ("if(!query.IsEOF()) query.MoveNext;")PS: Eventuell könntest du aus ex->m_strStateNativeOrigin oder ex->m_nRetCode genauere Fehlerinformationen herausfinden.
-
ex->m_strStateNativeOrigin ist leer, der ret-Code ist -1.
Das moveNext rufe nicht ich auf sondern die Open-Methode o_O
-
Muss ich irgendwie vorher noch Spalten binden?
Meine Aufgabe: ich habe eine DB und ein unbekanntest SELECT-Statement. Das soll ich ausführen und das Ergebnis woanders hinschreiben. Ist also dynmaisch vom Aufbau des Ergebnisses.
Ich wollte das halt mit CDatabase(Verbindung steht, das klappt) und CRecordset machen.
Der Ansatz der da oben steht ist doch soweit richtig, oder?
-
Ich benutz jetzt OpenEx anstatt Open und es geht, so ein Schwachsinn ... .