【接口汇总】Qt访问MySQL和SQL Server数据库的两种方式


前言

提示:个人接口的使用总结(Qt开发)

描述:在项目开发中对数据库的操作往往起着不可或缺的作用,比如连接和断开数据库,增删查改等一系列操作,所以本人在这里对数据库的连接和断开操作的接口就简要的记录一下吧。


一、连接数据库

提示:MySQL通过QMYSQL驱动连接,SQL Server通过QODBC驱动连接

1.接口声明

 void DatabaseConnect(QSqlDatabase &db,QString connectName);
 /*
 参数:db表示数据库对象,connectName表示数据库的连接名称
 返回值:空
 */

2.接口实现

void SEMSDatabase::DatabaseConnect(QSqlDatabase &db, QString connectName)
{
    //数据库初始化
    if(true == QSqlDatabase::contains(connectName)){
        db = QSqlDatabase::database(connectName);
        //cout << QStringLiteral("已存在的连接名称");
    }else{
        db = QSqlDatabase::addDatabase("QMYSQL",connectName);	//连接MySQL
        //db = QSqlDatabase::addDatabase("QODBC",connectName);	//连接SQL Server
        //cout << QStringLiteral("新添加的连接名称");
    }

    //初始化数据库连接参数的默认值
    QString hostIp = ConfigValue::getConfigValueWithKey("Config/sqlConfig.ini","CONNECTMYSQL/SERVER").toString();
    quint32 Port{3306};
    QString DbName{"sems"};		//C11统一初始化
    QString UID{"sa"};
    QString PWD{"1008"};
    
    //读取数据库的配置文件
    QSettings settings("Config/sqlConfig.ini",QSettings::IniFormat);
    //以下为MySQL的连接方式
    hostIp = settings.value("CONNECTMYSQL/SERVER").toString();
    Port = settings.value("CONNECTMYSQL/PORT").toInt();
    DbName = settings.value("CONNECTMYSQL/DbName").toString();
    UID = settings.value("CONNECTMYSQL/UID").toString();
    PWD = settings.value("CONNECTMYSQL/PWD").toString();
    db.setHostName(hostIp);
    db.setPort(Port);
    db.setDatabaseName(DbName);
    db.setUserName(UID);
    db.setPassword(PWD);
    
/*    //以下为SQL Server的连接方式
    hostIp = settings.value("CONNECTSQL/SERVER").toString();
    DbName = settings.value("CONNECTSQL/DATABASE").toString();
    UID = settings.value("CONNECTSQL/UID").toString();
    PWD = settings.value("CONNECTSQL/PWD").toString();
    QString connectInfo = QString("DRIVER={QODBC};SERVER=%1;DbName=%2;UID=%3;PWD=%4;")
            .arg(hostIp).arg(DbName).arg(UID).arg(PWD);
    db.setDatabaseName(connectInfo);
*/
    int i=0;
    do{
        db.open();  //打开数据库
        i++;
        if(db.isOpen() == false){
            QThread::msleep(300);
            cout << QStringLiteral("数据库重连...") << connectName;
        }else{
            break;
        }
    }while(i<10);

    if(db.isOpen() == false){
//        Warning::setWarning("connect database defeat");
        cout << QStringLiteral("connect database defeat:") << connectName;
    }else{
//        cout <<QStringLiteral("connect database success:") << connectName;
    }
}

二,断开数据库

1.接口声明

bool DatabaseDisConnect(QString connectName);
/*
参数:connectName表示数据库的连接名称,根据该名称进行数据库的断开
返回值:true表示断开成功,false表示断开失败
*/

2.接口实现

bool DatabaseDisConnect(QString connectName)
{
    if(QSqlDatabase::contains(connectName))
    {
        QSqlDatabase::removeDatabase(connectName);
        return true;
    }
    return false;
}

三,数据库的配置文件

提示:该配置文件的图片仅供参考哈

在这里插入图片描述


总结

日常摸鱼:OK,接口记录完成了,记得在.pro文件里加入 sql 模块(Qt += sql),然后在上述接口声明的头文件里添加 #include < QSql >,#include < QSqlDatabase >。对数据库的增删查改主要是通过#include < QSqlQuery >来操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉伊卜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值