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

Я работаю с SQLite, делая insert в таблицу. 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() возвращает нет запроса не удалось получить строку

понятия не имею, почему все так, но действительно хочу узнать.

1 ответов


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

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

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

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