[gelöst] SQLITE, Where Clause funktioniert nicht
Verfasst: 8. Juni 2014 23:39
Hallo zusammen,
direkt: ich habe gegoogelt und schon ein paar weitere Freunde gefragt, die mir allerdings nicht weiterhelfen konnten. Daher wende ich mich an das QtForum. Ich habe ein Problem mit meiner QSQLITE Query Anfrage. Es geht im speziellen um Folgendes:
Ich verwalte derzeit über Qt eine kleine Datenbank. Einträge hinzufügen über den Befehl funktioniert ohne Probleme und ich sehe auch direkt Änderungen in der GUI.
Möchte ich allerdings Einträge Löschen oder auch nur Updaten, so kann ich diese Funktion nicht korrekt ausführen. Zwar gibt mir q.lastError().text() keinen Fehler wieder und die Anfrage des Querys in Form von (Wobei Klassentyp als Tabellenname ersetzt wird und QString::numer(iID) gibt mir den entsprechenden ID Wert des Eintrages aus vorherigem Programmabschnitt (funktioniert auch)).
Auch im Debugger finde ich keinen Fehler, das Programm stürzt nicht ab, nichts besonderes. Nur die Anfrage an die Datenbank funktioneiert auf Gedeih und Verderben nicht. Wende ich allerdings die Where-Condition ab und schreibe z.B. wird alles in Fahrer gelöscht, so soll es ja auch sein. Ändere ich dann jedoch das ganze mit dem Zusatz und schreibe funktioniert das nicht und ich lande dort, was ich oben beschrieben habe.
Hat da jemand einen Lösungsvorschlag? Für Rückfragen stehe ich natürlich jederzeit offen und freue mich auch darüber!
Vielen Dank für eure Antworten!
Thomas
direkt: ich habe gegoogelt und schon ein paar weitere Freunde gefragt, die mir allerdings nicht weiterhelfen konnten. Daher wende ich mich an das QtForum. Ich habe ein Problem mit meiner QSQLITE Query Anfrage. Es geht im speziellen um Folgendes:
Ich verwalte derzeit über Qt eine kleine Datenbank. Einträge hinzufügen über den Befehl
Code: Alles auswählen
if(!q.prepare("INSERT INTO "+Klassentyp+" (sName, sDescription, dCreate, dLastModified, dCustom, tBest, tTotal, qPicture, iMassstab, iTotalLaps, dDummy) VALUES (:sName, :sDescription, :dCreate, :dLastModified, :dCustom, :tBest, :tTotal, :qPicture, :iMassstab, :iTotalLaps, :dDummy)")) {
QSqlError err = q.lastError();
cout << "\n\n FEHLER BEIM ABSPEICHERN: \n" +err.text().toStdString() << "\n\n";
QMessageBox::critical(0,"Datenbankfehler","Fehler in der Datenbank! Wollte basic::vDBSave ausfuehren und bin im ersten Block hängen geblieben. Der SQL Error gibt zurück: \n" +err.text());
}
// …
if(!q.exec()) {
QSqlError err = q.lastError();
cout << "Fehler beim abspeichern: in basic::vDBSave ganz am Ende habe ich folgenden Fehler: \n" << err.text().toStdString() << "\n";
return;
}
Möchte ich allerdings Einträge Löschen oder auch nur Updaten, so kann ich diese Funktion nicht korrekt ausführen. Zwar gibt mir q.lastError().text() keinen Fehler wieder und die Anfrage des Querys in Form von
Code: Alles auswählen
QString query = "DELETE FROM "+Klassentyp+" WHERE ID = '"+QString::number(iID)+"'";
// Den Query Ausführen und auf Fehler gucken.
if(!q.exec(query)) {
QSqlError err = q.lastError();
QMessageBox::critical(0,"Datenbankfehler","Fehler in der Datenbank! Wollte vDBErase ausfuehren und bin im schreibenden Block hängen geblieben. Der SQL Error gibt zurück: \n" +err.text());
}Auch im Debugger finde ich keinen Fehler, das Programm stürzt nicht ab, nichts besonderes. Nur die Anfrage an die Datenbank funktioneiert auf Gedeih und Verderben nicht. Wende ich allerdings die Where-Condition ab und schreibe z.B.
Code: Alles auswählen
delete from table FahrerCode: Alles auswählen
delete from table Fahrer where ID = 2Hat da jemand einen Lösungsvorschlag? Für Rückfragen stehe ich natürlich jederzeit offen und freue mich auch darüber!
Vielen Dank für eure Antworten!
Thomas