connect.h
#ifndef CONNECT_H
#define CONNECT_H
#include <QtSql>
#include <QObject>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QVector>
#include <QTextCodec>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QTime>
#include <QSettings>
#include <QSqlError>
#include <QtDebug>
#include <QSqlDriver>
#include <QSqlRecord>
#include <QMessageBox>
#include <QVariant>
class Connect
{
public:
QString dbGoodsName,dbSiteName,hostName,userName,passWord,imageFromDir,imageToDir;
int port,priceRange;
bool setConfig();
bool createConnection();
bool createConnectionSite();
bool closeConnection();
};
#endif // CONNECT_H
connect.cpp
#include "connect.h"
bool Connect::createConnection()
{
setConfig();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "goods");
db.setHostName(hostName);
db.setUserName(userName);
db.setPassword(passWord);
db.setPort(port);
db.setDatabaseName(dbGoodsName);
if( !db.open())
{
QMessageBox::critical(0, "Cannot open mysql database",
"Unable to establisha database connection."
, QMessageBox::Cancel);
//qDebug() << "failed to connect mysql";
return false;
}
//qDebug() << "connect mysql successfully!";
db.close();
return true;
}
bool Connect::createConnectionSite()
{
setConfig();
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "site");
db.setHostName(hostName);
db.setUserName(userName);
db.setPassword(passWord);
db.setPort(port);
db.setDatabaseName(dbSiteName);
if( !db.open())
{
QMessageBox::critical(0, "Cannot open site's mysql database",
"Unable to establisha database connection."
, QMessageBox::Cancel);
//qDebug() << "failed to connect site's mysql";
return false;
}
//qDebug() << "connect site's mysql successfully!";
db.close();
return true;
}
bool Connect::closeConnection()
{
//
}
bool Connect::setConfig()
{
QSettings setting("g:\\setting.ini",QSettings::IniFormat);
setting.beginGroup("configuration");
dbGoodsName=setting.value("dbGoodsName").toString();
dbSiteName=setting.value("dbSiteName").toString();
hostName=setting.value("hostName").toString();
userName=setting.value("userName").toString();
passWord=setting.value("passWord").toString();
port=setting.value("port").toInt();
return true;
}
在connect这个类中,只需设置连接数据库即可,具体功能可以直接实现在对应的类。
程序初始化的时候 实例化这个类,其他的地方要连接数据库便无需再adddatabase操作
之前每次使用都实例化它,导致别的地方使用中断。
其中两个数据库,用了两个函数分别adddatabase
具体使用:
QSqlDatabase dbgoods = QSqlDatabase::database( "goods" );
QSqlDatabase dbsite = QSqlDatabase::database( "site" );
QSqlQuery querydbGoods(dbgoods);
QSqlQuery querydbGoods2(dbgoods);
QSqlQuery querydbSite(dbsite);
当有需要同时用到同一个数据库的多个连接时可以设置多个连接 如3/4行,注意不同的数据库要传递不同的QSqlDatabase。
QT代码在网上找资料确实有点难,最近在闲鱼有人给我分享了一份教程,有需要可以留言邮箱,免费分享,借那个人一句话,我喜欢爱学习的人。
且努力且珍惜!