【发布时间】:2020-09-01 14:14:02
【问题描述】:
据我所知,这是您的数据库/查询中的一个错误,我在 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,得到了相同的结果。我错过了什么?
【问题讨论】:
-
你如何实例化你的
qry对象? -
@thibsc
QSqlQuery qry; -
我真的不会在一个prepare中调用两个sql命令,但我认为你应该调用
bindValue六次,而不是三次? -
@wthung 调用 bindValue 六次也没有用,但我将您的解决方案与我的解决方案结合起来。