Problem mit Sql Query

Alles rund um die Programmierung mit Qt
Antworten
Lichter
Beiträge: 23
Registriert: 20. Januar 2011 12:48

Problem mit Sql Query

Beitrag 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
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Beitrag 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.
Lichter
Beiträge: 23
Registriert: 20. Januar 2011 12:48

Beitrag von Lichter »

query.lastError() hat Licht ins Dunkeln gebracht. Die Datenbank war "Readonly". :lol: :lol:
Vielen Dank!
Antworten