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
我错过了什么吗?为什么第一种方法不起作用?
答案 0 :(得分:2)
使用字符串调用构造函数直接执行该查询。一旦构造了对象,查询就已经执行了。
当您再调用.exec()
时,它会尝试执行使用prepare()
准备的查询。但是没有prepare()
,所以尝试失败了。此失败会导致您在程序中看到的返回值false
。