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.
InformationsquelleAutor user3136871 | 2013-12-26
Schreibe einen Kommentar