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/

10-11 12:24