QSqlQuery构造函数的奇怪行为

时间:2013-11-12 19:08:10

标签: c++ qt5

QMake 3.0版

Qt版本5.0.2

使用时

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

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

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

我得到了真实且正确的数据。

documentation of 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 

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

1 个答案:

答案 0 :(得分:2)

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

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