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() возвращает нет запроса Невозможно получить строку
Понятия не имею, почему все так, но очень хочется это выяснить.
1 ответ
Решение
Пожалуйста, используйте подготовить в качестве официального примера:
QSqlQuery testQuery;
testQuery.prepare("INSERT INTO test(testcol) VALUES(:val)");
testQuery.bindValue(":val", someQStringObj);
testQuery.exec();
Причина ошибки заключается в том, что запрос был выполнен перед привязкой к соответствующему заполнителю. Вы можете увидеть соответствующую часть документации конструктора:
Если запрос не является пустой строкой, он будет выполнен.