当前位置: 首页 > article >正文

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";

    }


http://www.kler.cn/news/324521.html

相关文章:

  • 【k8s】:DevOps 模式详解
  • 物联网系统中模拟温度传感器测温方案
  • 设计模式之享元(Flyweight)模式
  • 设计模式小记:构造器
  • QT九月28日
  • 阿里云函数计算 x NVIDIA 加速企业 AI 应用落地
  • 量化金融中的 AI 革命:LLMs 如何重新定义交易策略
  • .NET 开源的功能强大的人脸识别 API
  • 博客摘录「 GD32的flash读、擦除、写操作」2024年9月2日
  • 前端问答:JavaScript 中的??和|| 有啥不同
  • 小程序电量
  • 阿布量化:基于 Python 的量化交易框架
  • 德克威尔FS系列一体式PROFINET协议模块组态步骤
  • 文件和目录
  • YOLOv8最新改进2023 CVPR 结合BiFormer
  • 【Java-JVM】
  • Vue之axios请求
  • 性能优化-数据库索引优化实战指南
  • 【Flume Kafaka实战】Using Kafka with Flume
  • ISA Server配置https踩坑全过程
  • 【初阶数据结构】排序——插入排序
  • Vue.js与Flask/Django全栈开发实战:从零搭建前后端分离的高效Web应用,打造现代化全栈开发体验!
  • HAL库I2C通用驱动程序(HAL I2C Generic Driver)
  • 英伟达Blackwell系列显卡揭秘:RTX 5090与RTX 5080引领性能新高度
  • [SAP ABAP] SELECTION-SCREEN
  • LeetCode - #124 二叉树中的最大路径和(Top 100)
  • 如何使用tcpdump android手机抓包
  • AI大模型的基本流程
  • 2025第四届深圳国际数据中心液冷散热展会
  • Certbot自动申请并续期https证书