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