注意:這是與SQLite,但我期望問題是在Qt端。Qt - 如何使用「WHERE ... IN」子句將QList綁定到QSqlQuery?
sqlite> create table testtable (id INTEGER PRIMARY KEY NOT NULL, state INTEGER);
sqlite> insert into testtable (state) values (0);
sqlite> insert into testtable (state) values (1);
sqlite> insert into testtable (state) values (9);
sqlite> insert into testtable (state) values (20);
然後測試我的查詢:
首先,我從SQLite的命令行工具建立一個數據庫表(這些預期結果)
sqlite> SELECT id,state FROM testtable WHERE state IN (0,1,2);
1|0
3|1
然後我運行這個C++代碼:
void runQuery() {
QSqlQuery qq;
qq.prepare("SELECT id,state FROM testtable WHERE state IN (:states)");
QList<QVariant> statesList = QList<QVariant>();
statesList.append(0);
statesList.append(1);
statesList.append(2);
qq.bindValue(":states", statesList);
qq.exec();
qDebug() << "before";
while(qq.next()) {
qDebug() << qq.value(0).toInt() << qq.value(1).toInt();
}
qDebug() << "after";
}
它打印此:被印無行
之前
後
。我認爲這是因爲我無法直接將列表綁定到「in」子句中的佔位符。但有沒有辦法做到這一點?我一直無法找到任何關於此的信息。