我正在使用QSqlQuery在我的Qt 5/C++程序中创建一个简单的SQLite更新。当我执行下面的查询时,我得到错误“参数计数不匹配”。但是为什么呢?
QSqlQuery updateQuery;
updateQuery.prepare("UPDATE mytable SET m=:m WHERE r=:r AND u=:u LIMIT 1");
updateQuery.bindValue(":m", m);
updateQuery.bindValue(":r", r);
updateQuery.bindValue(":u", u);
sqlErrors = !updateQuery.exec();
变量m,r,u是QString的。我有3个参数,并且绑定了所有这三个。哪里不匹配了?所以像这样的帖子只引用INSERT命令,但是其他所有适用的似乎都是正确的。
检查lastQuery()确认绑定替换没有发生。我还可以看到prepare语句失败(返回false)-但在我看来它是有效的SQL。
1条答案
按热度按时间4c8rllxm1#
看起来问题出在LIMIT字上。一些SQLite包在编译时没有SQLITE_ENABLE_UPDATE_DELETE_LIMIT标志。这意味着您不能向更新语句添加限制。
默认关闭似乎是一个奇怪的功能(从基本仓库分发)...但仅此而已。