qt6 使用QPSQL

检查可用的数据库驱动:

    // iteator all database driver
    QStringList drivers = QSqlDatabase::drivers();
    QStringList::iterator it;
    for (it = drivers.begin(); it != drivers.end(); ++it)
    {
        qDebug() << *it;
    }

qt6 自带pg数据库驱动:

pro文件加个说明:

引用位置添加(按需添加,这里我就大致加一下):

 test code: 理想情况当然是要用pool,这里只是演示调用而已

QSqlError DbTool::testConnection(const QString &driver, const QString &dbName, const QString &host, const QString &user, const QString &passwd, int port)
{
    // 为每个连接创建一个唯一的标识符
    static int cCount = 0;

    // 存储数据库连接的错误信息
    QSqlError err;

    // 添加数据库连接并设置连接参数
     db = QSqlDatabase::addDatabase(driver, QString("myChat%1").arg(++cCount));
    db.setDatabaseName(dbName);
    db.setHostName(host);
    db.setPort(port);

    // 尝试打开数据库连接
    if (!db.open(user, passwd)) {
        // 如果打开失败,获取错误信息并移除数据库连接
        err = db.lastError();
        db = QSqlDatabase();
        QSqlDatabase::removeDatabase(QString("mychat%1").arg(cCount));
    }else{
        // QMessageBox::information(0, QObject::tr("Database Information"),
        //     "Database is connected successfully");
        qDebug() << "Database is connected successfully";
        //query table sys_doctors
        QSqlQuery query(db);
        bool b=query.exec("SELECT user_name FROM sys_doctors");
        if (b)
        {
            qDebug() << "query success";
        }
        else
        {
            qDebug() << "query failed";
        }
        while (query.next())
        {
            QString name = query.value(0).toString();
            qDebug() << name;
        }

        db.close();  

    }

    // 返回数据库连接的错误信息(如果有)
    return err;
}

调用代码:

    QSqlError err = dbtool->testConnection("QPSQL", "myChat", "localhost", "postgres", "1", 5432);
    if (err.type() != QSqlError::NoError)
    {
        qDebug() << err.text();


    }
    else
    {
        qDebug() << "Database is connected successfully";

    }

使用Qt连接MySQL的过程中,出现"QPSQL driver not loaded"错误可能有多种原因。首先,需要确认已经正确安装了Qt和PostgreSQL,并且它们的版本是兼容的。如果Qt是32位的,那么PostgreSQL也需要安装32位的版本。确保环境变量已经正确设置,包括Qt和PostgreSQL的路径。在运行项目之前,可以将以下文件复制到可执行文件目录中:libintl.lib、libpq.dll、libpq.lib、qsqlpsqld.dll、qsqlpsql.dll、ssleay32.dll和libeay32.dll。此外,还应将libpq.dll复制到C:\Windows\目录下。最后,在工程运行目录下执行"windeployqt AppName.exe"命令来解决依赖关系。需要注意的是,Windows平台下Qt直接支持的数据库驱动只有QSQLITE和QSQLITE2,如果要使用其他数据库驱动(如QMYSQL、QPSQL等),需要进行额外的配置和加载。 可以使用以下步骤来排查和解决"QPSQL driver not loaded"错误: 1. 确认Qt和PostgreSQL的版本兼容性,并安装相应的位数(32位或64位)。 2. 检查环境变量是否正确设置,包括Qt和PostgreSQL的路径。 3. 将所需的库文件(libintl.lib、libpq.dll、libpq.lib、qsqlpsqld.dll、qsqlpsql.dll、ssleay32.dll和libeay32.dll)复制到可执行文件目录,以及将libpq.dll复制到C:\Windows\目录下。 4. 在工程运行目录下执行"windeployqt AppName.exe"命令来解决依赖关系。 5. 如果以上步骤都没有解决问题,可能需要检查Qt的安装和配置是否正确,并重新安装或配置Qt。 需要注意的是,Windows平台下Qt直接支持的数据库驱动只有QSQLITE和QSQLITE2。如果想要使用其他数据库驱动(如QMYSQL、QPSQL等),需要进行额外的配置和加载。可以根据需要参考Qt文档中关于数据库驱动的相关内容进行配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [QMYSQL driver not loaded(完整解决方案)](https://blog.csdn.net/qq_37529913/article/details/109850670)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [解决Qt数据库驱动未加载的问题(QSqlDatabase:QPSQL driver not loaded QSqlDatabase)](https://blog.csdn.net/Daisy_jf/article/details/103232062)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值