使用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
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
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* 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 }
以上是关于使用Qt5.6连接MySql的主要内容,如果未能解决你的问题,请参考以下文章
无法从 qt5.6 源代码为 raspberry pi 2 构建 qtwebengine