qt 连接mysql的一些小经验 代码

7 篇文章 0 订阅

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代码在网上找资料确实有点难,最近在闲鱼有人给我分享了一份教程,有需要可以留言邮箱,免费分享,借那个人一句话,我喜欢爱学习的人。

且努力且珍惜!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值