Qt QSqlQuery bindValue arbeitet mit ? aber nicht mit :Platzhalter
Arbeite ich mit SQLite zu tun einfügen in die Tabelle. Folowwing
QSqlQuery testQuery(QString("INSERT INTO test(testcol) VALUES(?)"));
testQuery.bindValue(0, someQStringObg);
testQuery.exec();
funktioniert, aber
QSqlQuery testQuery(QString("INSERT INTO test(testcol) VALUES(:val)"));
testQuery.bindValue(":val", someQStringObg);
testQuery.exec();
nicht. testQuery.lastError().text() gibt Keine Abfrage keine fetch-Zeile
Habe keine Ahnung, warum die Dinge sind, die Art und Weise, aber wirklich herausfinden wollen.
- Die sql-Typ und-version benutzt du? Die Qt-version? Welches OS, welche version? Sie haben versucht, explizit .prepate () - Aufruf zu sehen, der return-Wert? Auch ist es seltsam, dass Sie mischen das "?" und ": - " Ansätze, aber das sollte keine Rolle spielen.
- Versuchen Sie, drucken Sie die Letzte Abfrage mit diesem:
qDebug () << query->lastQuery()
nur um sicher zu gehen. Was hat das zu drucken? Auch könnten Sie bitte überprüfen, ob die Tabelle vorhanden ist, ordnungsgemäß vor der Einfügung der zweite Fall? Man könnte ein command line client für Doppel überprüfung dieser. - mit vorbereiten, alles funktioniert! Danke!
- OK, Super. Eingereicht, eine Antwort für eine bessere Lesbarkeit.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nutzen Sie bitte bereiten Sie die offiziellen Beispiel:
Den Grund für den Fehler ist, dass die Abfrage ausgeführt wurde, bevor die Bindung an die entsprechenden Platzhalter. Sehen Sie den relevanten Teil der Konstruktor Dokumentation: