QT 连接数据库类

学习连接类建立 类在其他地方使用 演示如何连接MYSQL SQL2000 数据库

cpp 复制代码
#ifndef CONNECTIONSERVER_H
#define CONNECTIONSERVER_H




class ConnectionServer
{
public:
 static bool createConnectionByName(const QString &connectionName);
static void createConnectionByNameSQL2000(const QString &connectionName);

private:
   };

#endif // GONGGHANS_H



#include "ConnectionServer.h"
#include <QSqlDatabase>
bool ConnectionServer::createConnectionByName(const QString &connectionName)
{
    QSqlDatabase db2 = QSqlDatabase::addDatabase("QODBC", connectionName);

    // 数据库连接需要设置的信息
    db2.setDatabaseName("hw");
    //QODBC连接数据库 不用填写以 因为 电脑ODBC已经设置好了
    //db2.setHostName("172.25.0.24");
    //db2.setPort(3306);
    //db2.setUserName("root");
    //db2.setPassword("QWERTY");
    //db2.setDatabaseName("ZSSJKCF"); // 如果是 SQLite 则为数据库文件名
    //db.setPort(3306);// 端口号
    // 连接数据库判断
    bool ok = db2.open();
    if (ok)
    {
        qDebug() << "数据库连接成功 database connect is ok";
    }
    else
    {
        qDebug() << "数据库连接失败   database connect is fail";
    }
    return true;
}


void ConnectionServer::createConnectionByNameSQL2000(const QString &connectionName)
{
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC", connectionName);
    // 数据库连接需要设置的信息
    QString dsn = QString("DRIVER={SQL SERVER};SERVER=%1;DATABASE=%2").arg("172.25.0.24").arg("HWSJK");
    db.setDatabaseName(dsn);
    //db.setHostName("172.25.0.24"); //设置数据库主机名
    //db.setDatabaseName("HWSJK"); //设置数据库名
    db.setUserName("huwei853"); //设置数据库登入用户名
    db.setPassword("QWEasd123"); //数据库登入密码
    //db.setPort(3306);// 端口号
    // 连接数据库判断
    bool ok = db.open();
    if (ok){
        qDebug() << "数据库连接成功 SLQ2000";
    }
    else
    {
        qDebug() << "数据库连接失败SLQ2000";
    }
}

类的调用
简单使用
ConnectionServer::createConnectionByName("mysql");
 QSqlDatabase db = QSqlDatabase::database("mysql");
 QSqlQuery query(db);
 QString llf = "Select 序号,内容 From ptquanx";
 query.exec(llf);
 if (query.next()){
   ........
 }



使用时候 看看连接状态

 // 检查数据库连接
    QString connectionName ="MYSQL";
    QSqlDatabase db;
    // 检查连接是否已存在
    if (QSqlDatabase::contains(connectionName)) {
       // qDebug() << "deleteRecord: 连接已存在,获取连接:" << connectionName;
        db = QSqlDatabase::database(connectionName);
    } else {
        //qDebug() << "deleteRecord: 连接不存在,创建新连接: 1" << connectionName;
        // 创建连接
        if (!ConnectionServer::createConnectionByName(connectionName)) {
            //qDebug()<< "deleteRecord: 创建数据库连接失败:" << connectionName;
                return "创建数据库连接失败";
        }
        db = QSqlDatabase::database(connectionName);
       // qDebug() << "deleteRecord连接: TTTT" << connectionName;
    }
    // 构建参数字符串

  QSqlQuery query(db);
  QString llf = "Select 序号,内容 From ptquanx";
 query.exec(llf);
 if (query.next()){
   ........
 }
相关推荐
袋鼠云数栈1 小时前
实时湖仓如何真正做到“数据够新”?
大数据·数据库·人工智能·数据治理
ACP广源盛139246256731 小时前
M6/M5 Pro Mac mini 端侧 AI 落地@ACP#YLB3116 中端多盘存储扩展在 AI 服务中的机会与应用场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos
ACP广源盛139246256732 小时前
M6/M5 Pro Mac mini 端侧 AI 新形态@ACP#GSV5800 Serdes 长距离视频传输在 AI 服务中的机会与落地场景
大数据·网络·数据库·人工智能·嵌入式硬件·macos·音视频
郝学胜-神的一滴3 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生
倔强的石头_4 小时前
事务边界与批量写入:避免长事务、锁等待和日志压力
数据库
努力努力再努力wz4 小时前
【Redis入门系列】从 KEYS 到 SCAN:渐进式遍历、Cursor 与位反转原理
数据库·redis·缓存
坐吃山猪4 小时前
【多线程】Lock与Condition
大数据·数据库
Lightpwd5 小时前
Spring Boot 多数据源落地:AbstractRoutingDataSource + 注解切面(附源码)
数据库·后端
LabVIEW开发5 小时前
LabVIEW 64位安装的位深陷阱:工具包、内存与工程兼容
数据库·labview·labview知识·labview功能·labview程序
寺中人5 小时前
MySQL 8.0 Windows 完整安装教程:环境配置、密码重置与常见报错排查
数据库·windows·mysql·环境搭建·mysql 安装