zoukankan      html  css  js  c++  java
  • 使用Qt5.6连接MySql

      最近在做毕业设计,有不少同学选择使用Qt和Mysql做数据库程序。然而,这两种开发工具并不是非常完美的一结合就能使用的。通常Qt会自带Mysql的驱动,但是,一般能直接使用的并不多。大多数博客论文都给出了Mysql驱动的编译过程。在这里给出现成的、已经编译好了的驱动。在可以win10、Qt5.6和mysql5.5版本中适用。

    连接数据库所需要的文件:

    链接:http://pan.baidu.com/s/1bpN6NjL 密码:86ys

    安装完Qt和Mysql,配置好环境变量。使用下面的程序测试一下是否能连接

    在ConMysql.pro里添加

    1 QT       += sql
    ConMysql.pro
     1 #ifndef DBHELPER_H
     2 #define DBHELPER_H
     3 
     4 #include <QSqlDatabase>
     5 #include <QSqlQuery>
     6 #include <QObject>
     7 #include <QtDebug>
     8 #include <QString>
     9 #include <QXmlStreamReader>
    10 
    11 class DBhelper
    12 {
    13 public:
    14     static DBhelper* getDBhelper();
    15     bool Open();
    16     void Close();
    17 
    18     void parseBlog();
    19 private:
    20     DBhelper();
    21     static DBhelper *_dbhelper;
    22 
    23     QString _HostName;
    24     int     _Port;
    25     QString _DatabaseName;
    26     QString _UserName;
    27     QString _Password;
    28 
    29     QSqlDatabase dbSQL;
    30 };
    31 
    32 #endif // DBHELPER_H
    DBhelper
     1 #include "dbhelper.h"
     2 
     3 DBhelper::DBhelper()
     4 {
     5     _HostName = "127.0.0.1";
     6     _Port = 3306;
     7     _DatabaseName = "login";
     8     _UserName = "root";
     9     _Password = "xiaoqi";
    10 
    11     dbSQL=QSqlDatabase::addDatabase("QMYSQL");
    12 }
    13 
    14 bool DBhelper::Open()
    15 {
    16     dbSQL.setHostName(_HostName);
    17     dbSQL.setPort(_Port);
    18     dbSQL.setDatabaseName(_DatabaseName);
    19     dbSQL.setUserName(_UserName);
    20     dbSQL.setPassword(_Password);
    21     if( !dbSQL.open() )
    22     {
    23         return false;
    24     }
    25     return true;
    26 }
    27 
    28 void DBhelper::Close()
    29 {
    30     if(dbSQL.isOpen())
    31     {
    32         dbSQL.close();
    33     }
    34 }
    35 
    36 
    37 DBhelper* DBhelper::_dbhelper = NULL;
    38 
    39 DBhelper *DBhelper::getDBhelper()
    40 {
    41     if(DBhelper::_dbhelper == NULL)
    42     {
    43         DBhelper::_dbhelper = new DBhelper();
    44     }
    45     return _dbhelper;
    46 }
    dbhelper.cpp

    在逻辑文件里添加

        DBhelper* db = DBhelper::getDBhelper();
        if( !db->Open())
        {
            qDebug() << "数据库载入失败!";
        }

     如果提示  QMYSQL driver not loaded ,则需要用上述网盘里的文件去替换源文件

    1.将sqldriver.rar解压后  替换掉X:QtQt5.6.05.6mingw49_32pluginssqldrivers里原有的文件

    2.将mysql路径下的libmysql.dll或者网盘里libmysql.dll的放入C盘的windows路径下,在调试程序

    如果没有提示上述红色字样,说明驱动加载成功,根据MYSQL参数修改相应的连接参数

     DBhelper类解释:

    (1)构造函数里初始化连接字符串,这里可以使用xml保存连接参数,初始化是读取xml文件,方便修改内容

    (2)getDBhelper函数可以获取到该类的实例。使用单例模式,该类在程序中只成功初始化一次,以后每次都可以通过该方法获取到这一个实例

    (3)open与close 打开与关闭函数

    附上完整的逻辑代码

     1 void MainWindow::on_pushButton_clicked()
     2 {
     3     DBhelper* db = DBhelper::getDBhelper();//获取实例
     4     if( !db->Open())
     5     {
     6         qDebug() << "数据库载入失败!";
     7     }
     8     //逻辑代码
     9     QString id = ui->lineEdit->text();
    10     QString pass = ui->lineEdit_2->text();
    11     int n;
    12     QSqlQuery query;
    13     query.prepare("select COUNT(*) from loginTable where ID = ? and password = ?");
    14     query.bindValue(0, id);
    15     query.bindValue(1, pass);
    16     query.exec();
    17     while(query.next())
    18     {
    19          n = query.value(0).toInt();
    20     }
    21     if( n == 1)
    22         qDebug() << "登陆成功!";
    23     else
    24         qDebug() << "登陆失败!";
    25 
    26     db->Close(); //关闭数据库
    27 }
    login.cpp
  • 相关阅读:
    css中!important的用法
    mysql分区
    js 随机生成信用卡号
    js argument
    lnmp
    php的mcrypt
    php gd
    php socket
    最优服务次序问题 水 NOJ1254
    众数问题 NOJ 1207
  • 原文地址:https://www.cnblogs.com/luckyQi/p/6545534.html
Copyright © 2011-2022 走看看