SQL Fehlermeldung ausgeben

Alles rund um die Programmierung mit Qt
Antworten
wafelek
Beiträge: 12
Registriert: 18. Oktober 2007 12:05

SQL Fehlermeldung ausgeben

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Einfach mal in die Doku schauen: http://doc.trolltech.com/4.3/qsqlquery.html
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
wafelek
Beiträge: 12
Registriert: 18. Oktober 2007 12:05

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wäre es nicht sinnvoller den returnwert von query.exec() zu überprüfen anstatt Textlänge des sqlerrors??
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
C167
Beiträge: 105
Registriert: 9. Februar 2008 20:30

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wie gesagt - check auf apps.exec() ist m.E. wesentlich sinnvoller.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
wafelek
Beiträge: 12
Registriert: 18. Oktober 2007 12:05

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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...
Antworten