使用Qt5.6连接MySql

Posted zhd_七

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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:\\Qt\\Qt5.6.0\\5.6\\mingw49_32\\plugins\\sqldrivers里原有的文件

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

 

以上是关于使用Qt5.6连接MySql的主要内容,如果未能解决你的问题,请参考以下文章

Qt Stylesheet 影响整个小部件

部分代码片段

无法从 qt5.6 源代码为 raspberry pi 2 构建 qtwebengine

QT mysql

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

linux中怎么查看mysql数据库版本