3. PostgreSQL数据库连接与测试
任务目标
编写一个Qt控制台程序,连接本机PostgreSQL数据库,执行一条简单的SELECT 1查询,并根据查询结果输出连接成功或失败信息。
环境准备
- Qt 5.15+(含Qt SQL模块)
- PostgreSQL 12+,本机默认端口5432,已创建数据库
postgres - Qt安装目录下需存在PostgreSQL驱动插件(
sqldrivers/libqsqlpsql),若缺失,可通过windeployqt或手动拷贝补充
关键完整代码
#include <QCoreApplication>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
// 1. 创建数据库连接对象
QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL");
db.setHostName("localhost");
db.setPort(5432);
db.setDatabaseName("postgres");
db.setUserName("postgres");
db.setPassword("123456"); // 请替换为实际密码
// 2. 打开连接
if (!db.open()) {
qDebug() << "连接失败:" << db.lastError().text();
return 1;
}
qDebug() << "数据库连接成功";
// 3. 执行简单查询验证
QSqlQuery query;
if (!query.exec("SELECT 1")) {
qDebug() << "查询执行失败:" << query.lastError().text();
db.close();
return 1;
}
// 4. 读取查询结果
if (query.next()) {
int result = query.value(0).toInt();
qDebug() << "查询结果:" << result;
if (result == 1) {
qDebug() << "验证通过: PostgreSQL连接与查询正常";
}
}
db.close();
return 0;
}
工程配置(.pro文件)
QT += core sql
CONFIG += console
TARGET = pg_test
SOURCES += main.cpp
运行与验证
- 在Qt Creator中新建Qt Console Application项目,将上述代码保存为
main.cpp,并替换.pro文件内容。 - 确认PostgreSQL服务已启动,且账号密码可正常登录。
- 构建并运行程序。
通过条件:程序输出以下三行日志,即表示连接与查询全部成功:
数据库连接成功
查询结果: 1
验证通过: PostgreSQL连接与查询正常
若输出连接失败,请检查服务端口、用户名密码是否正确;若提示driver not loaded,说明Qt缺少PostgreSQL驱动插件,需安装或配置libqsqlpsql。