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();
причиной ошибки является то, что запрос был выполнен до привязки к соответствующему заполнителю. Вы можете увидеть соответствующую часть конструктор документация:
если запрос не является пустой строкой, то оно будет выполнено.