c++ - QSqlQuery 构造函数奇怪的行为

标签 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 

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

最佳答案

使用字符串调用构造函数直接执行该查询。构造对象后,查询已被执行。

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

关于c++ - QSqlQuery 构造函数奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19937796/

相关文章:

c++ - 编译 Google Test 时出现 g++ fatal error

c++ - Boost 几何交集无法正确输出

c++ - Qt 5.8 和 Pdf.js 错误

c++ - Qt5 中用于多媒体的后端

c++ - 如何使 std::sort 在 std::swap 和我的 namespace 的模板化交换之间没有名称冲突?

c++ - 递归优化

c++ - 如何在使用QSplashScreen时显示任务栏图标

c++ - QtCreator 4.1.0 不显示 MainWindow 表单编辑器的 webengineview(QT 5.7)

c++ - QPainter性能高帧率

javascript - QML:StackView 和替换