【发布时间】:2015-09-08 11:02:36
【问题描述】:
出于测试目的,我试图在实际运行之前从QSqlQuery 对象中获取准备好的语句字符串。
我检查了lastQuery() 和executedQuery() 方法,但它们都不起作用。
void foo(QSqlQuery& q)
{
QString statement = q.lastQuery();
// statement is empty unless exec() is called
}
QSqlQuery q(myDb);
q.prepare("SELECT * FROM Foo;");
foo(q);
我想要一种方法来取回prepare() 参数字符串。
【问题讨论】:
-
什么是“boundValues()”? doc.qt.io/qt-4.8/qsqlquery.html#boundValues
-
我想要完整的字符串
SELECT * FROM Foo;而不仅仅是绑定到占位符的值。 -
恐怕解决方法是获取绑定值并将问号替换为绑定值。
-
该示例没有绑定值或问号,仍然
lastQuery返回一个空字符串。实际上,带有问号的语句对于我当前的用例是有效的,但是我发现没有返回字符串 before 运行exec()的方法 -
只要您将查询表示为您自己的数据结构就可以。在您的合成和验证完成之前,您不应该使用
QSqlQuery。QSqlQuery并没有真正设计成一个高级查询操作工具。这是一种提交查询以供执行的方式,仅此而已。