我正在使用 SQLite 驱动程序在 Windows 7 上使用 Qt 5.3.1(64 位)进行简单的参数化查询。当我bindValue()
用来设置查询的单个参数的值时,我系统地得到了可怕的“参数计数不匹配”错误。当我使用addBindValue()
. 请注意,bindValue()
带有 Qt 4.8.5(64 位)的代码可以正常工作。
这是完整的代码(main.cpp
):
#include <QtSql>
int main(int, char* [])
{
auto db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("db.sqlite");
db.open();
{
QSqlQuery query("CREATE TABLE IF NOT EXISTS hashes (filepath TEXT, modified INTEGER, hash TEXT)", db);
query.exec();
}
QSqlQuery query("SELECT modified FROM hashes WHERE filepath = :fp", db);
query.bindValue(":fp", "test.jpg");
if (!query.exec())
qDebug() << query.lastError();
db.close();
return 0;
}
QtCreator 项目文件(qtsqltest.pro
):
QT += core sql
TARGET = qtsqltest
TEMPLATE = app
SOURCES += main.cpp
我机器上的程序输出:
QSqlError("", "Parameter count mismatch", "")
任何想法?