Seite 1 von 1

SQL Fehlermeldung ausgeben

Verfasst: 10. März 2008 13:58
von wafelek
Moin!

Ich füge ein Datensatz über SQLQuery in die Datenbank (das klappt auch), möchte aber falls dieser Datensatz (Index) in der DB schon existiert ein Fehler ausgeben.

Code: Alles auswählen

QString insert_Prod = "INSERT INTO " + TableName + VariableNameList +  m_VariableDataList; 
QSqlQuery query;
query.exec(insert_Prod);
Zur Zeit wird ein gleicher Datensatz (Index ist unique) einfach ignoriert und es kommt kein Fehler zurück.
Kann mir jemand sagen wir ich eine SQL-Fehlermaldung bekomme.

Code: Alles auswählen

QSqlError(-1, "", "");
irgendwie soooo???

Wenn ich mein Generiertes Insert-Befehl in SQL eingebe, bekomme ich die Meldung "duplicate entry....Fehler-Nr:1062 "

MfG
wafelek

Verfasst: 10. März 2008 14:53
von Christian81
Einfach mal in die Doku schauen: http://doc.trolltech.com/4.3/qsqlquery.html

Verfasst: 11. März 2008 15:53
von wafelek
Danke, jetzt habe ich es geschaft.

Code: Alles auswählen

QSqlQuery query;
query.exec(InsertStatement);
if (query.lastError().databaseText().length() > 0)
{
      QMessageBox::information(0, "MySQL - Insert", query.lastError().databaseText());
}
Gruss wafelek

Verfasst: 11. März 2008 16:01
von Christian81
Wäre es nicht sinnvoller den returnwert von query.exec() zu überprüfen anstatt Textlänge des sqlerrors??

Verfasst: 12. März 2008 19:24
von C167
mein momentanes debugging sieht so aus:

Code: Alles auswählen

apps.exec();
if ( apps.lastError().isValid() )
{
	qDebug() << apps.executedQuery() << "\n" << apps.lastError() << "\n" << apps.boundValues();
}
apps ist dabei mein QSqlQuery-Objekt. die Ausgabe erfolgt somit nur wenn tatsaechlich ein Fehler aufgetreten ist.

Verfasst: 12. März 2008 20:45
von Christian81
Wie gesagt - check auf apps.exec() ist m.E. wesentlich sinnvoller.

Verfasst: 14. März 2008 12:02
von wafelek
Also so weit war ich auch schon mal. Leider gibt es unter Qt 3.3 die Funktion

Code: Alles auswählen

isValid()
nicht.

Trotzdem Vielen Dank

MfG
wafelek

Verfasst: 14. März 2008 12:17
von upsala
Wenn man schon eine 'etwas' ältere Qt-Version verwendet, dann sollte man es vielleicht auch irgendwann mal erwähnen. Schließlich hat dich Christian81 schon vor 4 Tagen auf die Version 4.3 hingewiesen...