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();
我得到真实的正确的数据返回。
在documentation of QSqlQuery中,以上两种情况都使用了一个构造函数beeing:
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
我想念什么吗?为什么第一种方法不起作用?
最佳答案
用字符串调用构造函数直接执行该查询。构造对象后,查询便已执行。
然后,当您调用.exec()
时,它将尝试执行使用prepare()
准备好的查询。但是没有prepare()
,因此尝试失败。此失败将导致您在程序中看到返回值false
。
关于c++ - QSqlQuery构造函数的奇怪行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19937796/