我有以下代码,它应该将值绑定到prepare语句:
f = linspace(0, Fs/2, length(magnitude)/2)
plot(f, magnitude(1:half))
例如,如果QSqlQuery query(db);
query.setForwardOnly(true);
query.prepare("SELECT Entry.* FROM Entry WHERE body LIKE ?;");
query.addBindValue(QVariant("%" + name + "%"));
query.exec();
tDebug("%s", query.executedQuery().toUtf8().data());
为name
,则查询应执行语句"thing"
,但它会执行SELECT Entry.* FROM Entry WHERE body LIKE "%thing%"
,几乎就像忽略了绑定值一样。命名占位符也有同样的问题。
答案 0 :(得分:1)
我在一个等效的例子中尝试了这个并且适当地测试了"准备"的结果。和" exec",它们都返回一个布尔值。我在exec之后测试了这些值是否正确:
QList<QVariant> list = query.boundValues().values();
for (int i = 0; i < list.size(); ++i)
qDebug() << i << ": " << list.at(i).toString();
我测试了我用
得到了预期的结果 while (query.next())
qDebug()<<"result = "<<query.value(0);
事实上,executedQuery
并未包含有界值,但Qt中的评论对此有些模糊:
&#34;如果在不支持占位符的DBMS上执行准备好的查询,则会模拟此查询的准备。原始查询中的占位符将替换为其绑定值以形成新查询。此函数返回修改后的查询。它主要用于调试目的。&#34;
所以我假设对于postgresql(我拥有的)和SQLite,executedQuery
确实返回带有占位符而不是有界值的原始文件。