为什么参数计数不匹配?

Why does parameter count mismatch?

据我所知,这是你的 database/query 中的一个错误,我已经在 DB Browser for Sqlite 中尝试了以下操作并且有效:

    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, pitanje_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", odgovor);
qry.bindValue(":korisnik_ID", id);
qry.bindValue(":pitanje_ID", QString::number(pitanjeid));
qry.exec();