一、数据库驱动查询
//查看自己安装的QT中支持哪些数据库驱动
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QMessageBox>
#include <QtSql/QSqlDatabase>
#include <QSqlError>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//打印Qt支持的数据库驱动
qDebug()<<QSqlDatabase::drivers();
//添加MySql数据库
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
//连接数据库
db.setHostName("127.0.0.1");
//数据库服务器ip
db.setUserName("root");
db.setPassword("123456");
db.setDatabaseName("cable_test_system");
//数据库打开失败
if(!db.open())
{
QMessageBox::warning(this,"错误",db.lastError().text());
}
}
Widget::~Widget()
{
delete ui;
}
如果大家是QT4的版本,可能里面包含七种数据库的驱动
但是如果是QT5的版本,发现只包含五种数据库的驱动,里面并不包含MYSQL数据库的驱动。Qt 5中取消了对MySQL数据库的默认支持,这是因为随着商业版的MySQL推出,MySQL已经不能算是一个完全开源的数据库了,而Qt默认只会给完全开源的数据库提供支持,而下面的数据库都是完全开源的。
二、给QT5添加MYSQL驱动
1.打开MySQL安装目录下的lib目录,复制libmysql.dll和libmysql.lib文件
- (每个人安装路径不同,根据你自己的安装路径,以下是我的安装路径)
2.将刚才复制的两个文件,粘贴到Qt的MinGW编译器的bin文件夹下
- (每个人安装路径不同,根据你自己的安装路径,以下是我的安装路径)
3.找到Qt安装目录下的sql驱动中的mysql文件夹
4.在Qt中打开mysql.pro,并修改下面3处代码添加include和limysql.lib的路径
- (每个人安装路径不同,根据你自己的安装路径,以下是我文件的路径)
TARGET = qsqlmysql
#添加MySQL的include路径
INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 5.7\include"
#添加MySQL的libmysql.lib路径,为驱动的生成提供lib文件
LIBS += "C:\Program Files\MySQL\MySQL Server 5.7\lib\libmysql.lib"
HEADERS += $$PWD/qsql_mysql_p.h
SOURCES += $$PWD/qsql_mysql.cpp $$PWD/main.cpp
#注释掉这句话
#QMAKE_USE += mysql
OTHER_FILES += mysql.json
PLUGIN_CLASS_NAME = QMYSQLDriverPlugin
include(../qsqldriverbase.pri)
#生成dll驱动文件的目录地址
DESTDIR = D:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql\lib
5.点击运行此工程,会在你的路径DESTDIR = D:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql\lib中生成四个文件,如下图所示,这四个文件就是qt所需的数据库驱动文件
6.将这四个文件复制粘贴到Qt安装目录下的sqldrivers文件夹
- (每个人安装路径不同,根据你自己的安装路径,以下是我文件的路径)
7.重启Qt,再次查看自己安装的QT中支持哪些数据库驱动(如何查看回第一步),就可以看到如下支持MYSQL数据库了
三、设置过程中遇到的问题
1.问题一
出现这个问题是因为粗心,没有将第4步中的QMAKE_USE += mysql注释掉,
注释掉即可#QMAKE_USE += mysql
2.问题二
说没有这个qtsqldrivers-config.pri
我们D:\Qt\Qt5.12.12\5.12.12\Src\qtbase\src\plugins\sqldrivers文件夹下有configure.pri文件,双击qsqldriverbase.pri打开该文件,将第四行注释掉,在下一行加入:include(./configure.pri)
3.问题三
这是四个文件生成,但是运行后又出现这个问题
原因是我的MySQL版本是64位的,而我的选择的Qt编译器的版本是32位的,所以各位在添加驱动的开始就要确定自己的MySQL版本和Qt编译器的版本相对应,那些需要复制粘贴的文件都要相互对应。所以如果出现这个错误,就重新按步骤对应好复制粘贴。