Qt QSqlQuery bindValue работает с? но не с: заполнителями

Я работаю с SQLite, делаю вставку в таблицу. Folowwing

QSqlQuery testQuery(QString("INSERT INTO test(testcol) VALUES(?)"));
testQuery.bindValue(0, someQStringObg);
testQuery.exec();

работает, но

QSqlQuery testQuery(QString("INSERT INTO test(testcol) VALUES(:val)"));
testQuery.bindValue(":val", someQStringObg);
testQuery.exec();

нет. testQuery.lastError (). text () возвращает Нет запроса Невозможно получить строку

Понятия не имею, почему все так, но очень хочется это выяснить.

8

Решение

Пожалуйста, используйте подготовить как официальный пример:

QSqlQuery testQuery;
testQuery.prepare("INSERT INTO test(testcol) VALUES(:val)");
testQuery.bindValue(":val", someQStringObj);
testQuery.exec();

Причина ошибки заключается в том, что запрос был выполнен до привязки к соответствующему заполнителю. Вы можете увидеть соответствующую часть конструкторская документация:

Если запрос не является пустой строкой, он будет выполнен.

9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]