数据库连接(Mysql与SQLite)

头文件

#include "QtSql"
#include "QtDebug"
#include "QString"
public:
DbClass(QString dblitename,bool menulite);
//true--> Starrlite.db //false--> config.db
DbClass(QString mysqldbname,QString host,QString username,QString password,bool islog);
//false -->Starrlidb //true --> Stattlilog

QSqlDatabase dblite; // Sqlite数据库连接标识 --> config.db
QSqlDatabase Starrlite; // Sqlite数据库连接标识 --> JumixRes.db
QSqlDatabase db; // Mysql数据库连接标识 -->Starrlidb
QSqlDatabase dblog; // Mysql数据库连接标识 --> Stattlilog

private:
QString ErrMess = ""; // 错误信息
bool status =false; //状态 true 数据正常

源码


DbClass::DbClass(QString dblitename,bool RestInfo=false)
{
QString filename=QCoreApplication::applicationDirPath()+"/"+dblitename;
QString filename2=QCoreApplication::applicationDirPath()+"/"+dblitename;
if ( (dblitename =="Config.db") && QFile::exists(filename2)) filename=filename2;//如果当前目录有Config,则优先使用,用于 多用户 同时使用

if (!RestInfo)
{ //Config.db this->dblite
if(QSqlDatabase::contains("sqliteconn"))
{
this->dblite = QSqlDatabase::database("sqliteconn");
}
else
{
this->dblite = QSqlDatabase::addDatabase("QSQLITE","sqliteconn");
this->dblite.setDatabaseName(filename);
}

bool ok = this->dblite.open();
if (ok)
{
this->status =true;
this->ErrMess ="打开SQlite数据库成功:"+dblitename;
}
else
{
this->status =false;
this->ErrMess ="打开SQlite数据库失败:"+dblitename+":"+this->dblite.lastError().text();
}
}
else
{ //JumixRes.db this->Starrlite //放与config 同一目录

if(QSqlDatabase::contains("starrliteconn"))
{
this->Starrlite = QSqlDatabase::database("starrliteconn");
}
else
{
this->Starrlite = QSqlDatabase::addDatabase("QSQLITE","starrliteconn");
this->Starrlite.setDatabaseName(filename);
}

bool ok = this->Starrlite.open();
if (ok)
{
this->status =true;
this->ErrMess ="打开SQlite数据库成功:"+dblitename;
}
else
{
this->status =false;
this->ErrMess ="打开数据库J失败:"+dblitename+":"+this->Starrlite.lastError().text();
}
}
}

DbClass::DbClass(QString mysqldbname,QString host,QString username,QString password,bool islog=false)
{
// qDebug()<<"MySQL DataBase Operation:"<< mysqldbname;
if (!islog)
{ //Mysql - Starrlidb - this->db
if(QSqlDatabase::contains("mysqlconn"))
{
this->db = QSqlDatabase::database("mysqlconn");
}
else
{
this->db = QSqlDatabase::addDatabase("QMYSQL","mysqlconn");
this->db.setHostName(host);
this->db.setPort(3306);
this->db.setUserName(username);
this->db.setPassword(password);
this->db.setDatabaseName(mysqldbname);
}
bool ok = db.open();
if (ok)
{
this->status =true;
this->ErrMess ="打开MySql数据库成功:"+mysqldbname;

}
else
{
this->status =false;
this->ErrMess ="打开MySql数据库失败:"+this->db.lastError().text();

}
}
else
{ //Mysql - Starrlilog - this->dblog
if(QSqlDatabase::contains("dblogconn"))
{
this->dblog = QSqlDatabase::database("dblogconn");
}
else
{
this->dblog = QSqlDatabase::addDatabase("QMYSQL","dblogconn");
this->dblog.setHostName(host);
this->dblog.setUserName(username);
this->dblog.setPassword(password);
this->dblog.setDatabaseName(mysqldbname);
}
bool ok = dblog.open();
if (ok)
{
this->status =true;
this->ErrMess ="打开Log数据库成功:"+mysqldbname;
// qDebug()<<"打开数据库出错,原因:"<< this->ErrMess;

}
else
{
this->status =false;
this->ErrMess ="打开Log数据库失败:"+this->dblog.lastError().text();
}
}
}