QSqlQuery Fehlerauswertung
Verfasst: 16. Juli 2012 11:34
Hi ich versuche Gerade eine Datenbankanbindung zu schreiben. Soweit Funktioniert das ganze auch.
Nun möchte ich eine Fehlerauswertung durchführen. Um z.B. den Benutzer mitzuteilen was evtl. an seinem Datensatz falsch ist. Wie z.B. das der Primärschlüssel schon vergeben ist, oder es nicht erlaubt ist das eine null in gewissen feldern steht. Mein Problem aktuell ist, das bis auf den Datenbanktext alle Fehler die gleiche nummer haben oder vom gleichen Typ sind. Zudem wollte ich wissen ob man das automatische schreiben der Fehlermeldung in der DOS-Box vermeiden kann?
Eine manuelle vorabauswertung im Code des insertstatements ist nicht möglich da in diverse Tabellen der Datenbank geschrieben wird und somit die Datenbank die Fehlerfeststellung übernehmen soll. Und danach nur noch der entsprechende Fehler ausgewertet werden soll.
Die Verbindung wird über ODBC zu einem SQL Server hergestellt hier der Code
Und hier der Code wie ich aktuell Versuche an den Fehler ran zu kommen. Leider sind die Informationen bis auf den databaseText nicht brauchbar da egal bei welchem Fehler identisch. Und jetzt jedes mal den String nach Schlagwörtern zu durchsuchen erscheint mir ein wenig unelegant zu sein. Hoffe ihr könnt mir einfachere Wege aufzeigen. Würde z.B. auch gern bei einem Insert von mehreren Datensätzen gern wissen welcher Key die PRIMARY KEY violation hervorruft.
Danke schon mal für eure Hilfe
Gruß
Schubi
Nun möchte ich eine Fehlerauswertung durchführen. Um z.B. den Benutzer mitzuteilen was evtl. an seinem Datensatz falsch ist. Wie z.B. das der Primärschlüssel schon vergeben ist, oder es nicht erlaubt ist das eine null in gewissen feldern steht. Mein Problem aktuell ist, das bis auf den Datenbanktext alle Fehler die gleiche nummer haben oder vom gleichen Typ sind. Zudem wollte ich wissen ob man das automatische schreiben der Fehlermeldung in der DOS-Box vermeiden kann?
Eine manuelle vorabauswertung im Code des insertstatements ist nicht möglich da in diverse Tabellen der Datenbank geschrieben wird und somit die Datenbank die Fehlerfeststellung übernehmen soll. Und danach nur noch der entsprechende Fehler ausgewertet werden soll.
Die Verbindung wird über ODBC zu einem SQL Server hergestellt hier der Code
Code: Alles auswählen
QString connectionString = "Driver={"+ driver + "};Server=" + server + ";Database=" + dbName;
db = QSqlDatabase::addDatabase("QODBC", "MainDBConnection");
db.setDatabaseName(connectionString);
db.setUserName("xxx");
db.setPassword("xxx");
if (!db.open()){
error = db.lastError().text();
qDebug() << error << endl;
status = false;
}
else
qDebug() << "Verbindung steht" << endl;
Code: Alles auswählen
QSqlQuery query(db);
query.setForwardOnly(true);
query.prepare(querry);
if(query.exec())
qDebug() << "erfolgreich" << endl;
else
{
qDebug() << "Datenbank Text: " <<query.lastError().databaseText() << endl;
qDebug() << "Treiber Text: " <<query.lastError().driverText() << endl;
qDebug() << "Fehler nummer: " <<query.lastError().number() << endl;
qDebug() << "Text: " <<query.lastError().text() << endl;
qDebug() << "Fehler type: " <<query.lastError().type() << endl;
}
query.clear();Gruß
Schubi