如何解决为什么参数计数不匹配?
根据我的收集,这是您的数据库/查询中的错误,并且我在sqlite的DB浏览器中尝试了以下操作,并且有效:
UPDATE odgovori SET odgovor="1131" WHERE korisnik_ID="2" AND pitanje_ID="1";
INSERT INTO odgovori (korisnik_ID,pitanje_ID,odgovor) SELECT "2","1","1" WHERE (SELECT Changes()=0);
但是,当我在QT中尝试此操作时:
Q_ASSERT(qry.driver()->hasFeature(QsqlDriver::Namedplaceholders));
qry.prepare("UPDATE odgovori SET odgovor=:odgovor WHERE korisnik_ID=:korisnik_ID AND pitanje_ID=:pitanje_ID;"
"INSERT INTO odgovori (korisnik_ID,odgovor) SELECT :korisnik_ID,:pitanje_ID,:odgovor WHERE (SELECT Changes()=0);");
qry.bindValue(":odgovor",odgovor);
qry.bindValue(":korisnik_ID",id);
qry.bindValue(":pitanje_ID",QString::number(pitanjeid));
qry.exec();
qDebug()<<qry.lastError();
我得到QsqlError("","Parameter count mismatch","")
。我用?
和qry.addBindValue
进行了尝试,但得到的结果相同。我想念什么?
解决方法
正如 @wthung 在评论中指出的那样,我尝试手动插入固定数字,调试器抛出QSqlError("21","Unable to execute multiple statements at a time","not an error")
因此,我将qry分为两部分,并且有效。
qry.prepare("UPDATE odgovori SET odgovor=:odgovor WHERE korisnik_ID=:korisnik_ID AND pitanje_ID=:pitanje_ID;");
qry.bindValue(":odgovor",odgovor);
qry.bindValue(":korisnik_ID",id);
qry.bindValue(":pitanje_ID",QString::number(pitanjeid));
qry.exec();
qry.prepare("INSERT INTO odgovori (korisnik_ID,pitanje_ID,odgovor) SELECT :korisnik_ID,:pitanje_ID,:odgovor WHERE (SELECT Changes()=0);");
qry.bindValue(":odgovor",QString::number(pitanjeid));
qry.exec();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。