1

QMake 3.0 版

Qt 版本 5.0.2

使用时

QSqlQuery query(QString("SELECT device_text_id FROM device"));
qDebug() << query.exec();

我在 query.exec() 中得到错误并且在查询对象中没有返回结果但是当我使用

QSqlQuery query;
query.prepare("SELECT device_text_id FROM device");
qDebug() << query.exec();

我得到真实和正确的数据返回。

QSqlQuery 的文档中是在上述两种情况下都使用的构造函数:

QSqlQuery(const QString & query = QString(), QSqlDatabase db = QSqlDatabase())

有关更多信息,我检查了我的 postgres (v9.1) 日志。每次以第一种方式执行查询时,我都会遇到此错误。

CET ERROR:  syntax error at end of input at character 9
CET STATEMENT:  EXECUTE 

我错过了什么吗?为什么第一种方法不起作用?

4

1 回答 1

2

使用字符串调用构造函数会直接执行该查询。一旦构造了对象,查询就已经被执行了。

然后,当您调用时.exec(),它会尝试执行准备好的查询prepare()。但是没有prepare(),所以尝试失败了。此失败会导致false您在程序中看到的返回值。

于 2013-11-12T19:55:45.960 回答