前言
提示:个人接口的使用总结(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 >来操作。