Seite 1 von 1

Problem mit Sql Query

Verfasst: 14. Februar 2011 16:19
von Lichter
Guten Tag,

leider habe ich ein Problem mit einer Sql Query.
Ich versuche verschiedene Daten aus einer LineEdit in eine Tabelle einer Datenbank zu schreiben. (SQLITE)

Code: Alles auswählen

QSqlQuery query;
	query.prepare("INSERT INTO Buch(titel,autor,jahr,verlag,thema,aufbewahrungsort,kommentar)" "VALUES (?,?,?,?,?,?,?)" );
	query.bindValue(0, ui_dialog.lnedit_Titel->text());
	query.bindValue(1, ui_dialog.lnedit_autor->text());
	query.bindValue(2, ui_dialog.lnedit_jahr->text());
	query.bindValue(3, ui_dialog.lnedit_Verlag->text());
	query.bindValue(4, ui_dialog.lnedit_Thema->text());
	query.bindValue(5, ui_dialog.lnedit_aufort->text());
	query.bindValue(6, ui_dialog.lnedit_kommentar->text());
	query.exec();
Der Fehler, dass keine Datenbank Verbindung aufgebaut wird, kann ausgeschlossen werden. Beim Debuggen wurde für prepare true zurückgegeben, für query.exec leider false. Ich verwende die Entwicklungsumgebung MS Visual Studio 2008. Was beim Debuggen ebenfalls auffällt, ist das beim ersten Satz, d.h. der Titel, die Farbe für lineEdit->Text Schwarz ist, beim zweiten bis zum letzten ist die Farbe allerdings rot?!
Es wäre nett, wenn sich jemand die Zeit nehmen könnte mir zu helfen.
Google habe ich ebenfalls benutzt, konnte allerdings nichts finden, was mir weiterhelfen konnte.

Mit freundlichen Grüßen
Lichter

Verfasst: 14. Februar 2011 16:43
von brax
QSqlQuery braucht noch die Datenbank auf der das Query arbeiten soll.

Wenn Du die bind values eh in der "richtigen" Reihenfolge hinzufügst, würde ich übrigens zu addBindValue raten:

Code: Alles auswählen

QSqlQuery query(myDb);
   query.prepare("INSERT INTO Buch(titel,autor,jahr,verlag,thema,aufbewahrungsort,kommentar)" "VALUES (?,?,?,?,?,?,?)" );
   query.addBindValue(ui_dialog.lnedit_Titel->text());
   query.addBindValue(ui_dialog.lnedit_autor->text());
   query.addBindValue(ui_dialog.lnedit_jahr->text());
   query.addBindValue(ui_dialog.lnedit_Verlag->text());
   query.addBindValue(ui_dialog.lnedit_Thema->text());
   query.addBindValue(ui_dialog.lnedit_aufort->text());
   query.addBindValue(ui_dialog.lnedit_kommentar->text());
   query.exec();
Ansonsten gibt Dir query.lastError() meist ganz gute Informationen darüber, was schiefgegangen ist.

Verfasst: 14. Februar 2011 16:59
von Lichter
query.lastError() hat Licht ins Dunkeln gebracht. Die Datenbank war "Readonly". :lol: :lol:
Vielen Dank!