微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么参数计数不匹配?

如何解决为什么参数计数不匹配?

根据我的收集,这是您的数据库/查询中的错误,并且我在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 举报,一经查实,本站将立刻删除。