我最近开始使用 Qt Creator 和 C++,并希望使用 PostgreSQL 数据库来满足我的需要。所以我想出了如何获取驱动程序,包括所有需要的标签并开始执行一些查询。
我创建了新表,插入了一些数据,然后更新了它们。一切都很好,直到我尝试简单地选择一些行。查询刚刚结束,没有错误消息和 NULL 响应。
该命令是一个简单的命令SELECT
:
query = db.exec("SELECT id FROM users WHERE name = 'Testuser';");
但是一个基本的SELECT
也不起作用:
query = db.exec("SELECT * FROM users;");
如果我现在完全复制此查询并将其作为 SQL 语句直接放入 pgAdmin,它就可以正常工作并使用用户 ID 进行响应。
由于谷歌的一些提示,我尝试了表名的引号,我尝试了完整的行名(SELECT users.id FROM public.users WHERE users.name = 'Testuser';
)和大小写字母 - 没有任何效果。
每个查询都可以正常工作,但如果我尝试 a SELECT
,它总是以 NULL 响应。尽管每个SELECT
-Querys 在 pgAdmin 中都可以正常工作。
有人有想法吗?
使用了以下标签:
#include <QDebug>
#include <QtCore/QCoreApplication>
#include <QtSql/QPSQLDriver>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QCryptographicHash>
#include <QSqlError>
完整的代码如下所示:
QString response;
QSqlQuery query;
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("127.0.0.1");
db.setPort(5432);
db.setDatabaseName("postgres");
db.setUserName("postgres");
db.setPassword("password");
if (db.open())
{
query = db.exec("SELECT id FROM users WHERE name = 'Testuser';");
response = query.value(0).toString();
}
db.close();