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

运行与验证

  1. 在Qt Creator中新建Qt Console Application项目,将上述代码保存为main.cpp,并替换.pro文件内容。
  2. 确认PostgreSQL服务已启动,且账号密码可正常登录。
  3. 构建并运行程序。

通过条件:程序输出以下三行日志,即表示连接与查询全部成功:

数据库连接成功
查询结果: 1
验证通过: PostgreSQL连接与查询正常

若输出连接失败,请检查服务端口、用户名密码是否正确;若提示driver not loaded,说明Qt缺少PostgreSQL驱动插件,需安装或配置libqsqlpsql。