1、需要下载的东西:QT和mysql
首先下载QT和MYSQL,我的版本:QT 5.14.2 MYSQL 和 MYSQL 8.0.31;
⭐QT下载路径:https://download.qt.io/archive/qt/5.14/
(建议先下载一个迅雷,不然下载速度会很慢,或者在清华镜像里面找一下)
⭐MYSQL下载路径:https://dev.mysql.***/downloads/installer/
使用过很多版本,没有碰到版本冲突问题,所以还是很简单的啦。
1.1 安装QT
安装QT需要一个账户,没有的话直接注册就行。安装直接点击下一步即可,只需要注意组件的选择,注意必选的有:**QT 5.14.2中的 MinGW 和 Source,Developer中的 MinGW 和 Creator **。一开始我没有选择source导致后面重新安装了,其他模块可以不用安装,点击可以查看模块大小。
1.2 安装MySQL
安装MySQL就很简单了,全部点击下一步即可,只需要注意记住密码即可。
安装之后打开MySQL ***mendLine,输入密码,然后创建数据库即可,注意记住数据库名称,比如我这里是用的test。(具体看图,密码就是安装时输入的密码)
- 添加环境变量
⭐ 注意一定要将QT和MySQL中的bin文件目录加入环境变量,这个很重要,否则QT可能无法访问到MySQL。
直接在Windows搜索框搜索环境变量,按下图从左到右操作就行,安装路径改成你自己的,bin目录具体位置参考下下图。
2. 在QT中使用MySQL
方法1:使用ODBC方式
- 在电脑搜索中搜索ODBC
- 点击添加
- 选择Unicode Driver
- 输入数据库名称和密码,点击测试如果显示Su***essful表示连接成功,这里的数据库名就是前面创建数据库时你自己定的名称。
- 在QT中验证,新建工程,输入以下代码,运行如果显示connect su***eed!表示连接成功。
void MysqlClass::connectMysql(void)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("localhost");
db.setDatabaseName("firstdat");
db.setPort(3306);
db.setUserName("root");
db.setPassword("123456");
db.open();
if(!db.isOpen()){
QMessageBox::critical(0, "error", "connect failed");
}else{
qDebug()<<"connect su***essed!"<<endl;
}
}
方法2:通过编译源码,在QT源码中加入MySQL动态库
- 注意一定要将QT和MySQL中的bin文件加入环境变量。
- 编译源码中的mysql工程
D:\software\program\QT\QT_5.14.2\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql路径,打开mysql.pro
①双击打开pro文件
②注释掉 QMAKE_USE += mysql
③添加INCLUDEPATH 和 LIBS
④添加输出位置DESTDIR
INCLUDEPATH += "C:\Program Files\MySQL\MySQL Server 8.0\include"
LIBS += "C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.lib"
DESTDIR = ../mysql/myLib/
注意将我的路径改成自己的路径,路径前面的可能和我的不同,后面应该是一样的,可以参考我的。例如我修改后如下图:
修改好后,点击锤子构建工程,可能会有下图报错,不用管它
构建成功会在源码mysql路径下生成myLib文件夹。
将文件夹下的三个文件复制粘贴到目录:\QT_5.14.2\5.14.2\mingw73_64\plugins\sqldrivers
到这里这部分就完成了,剩下就很简单了。
-
复制MySQL安装目录下的动态库文件libmysql.dll到QT中
C:\Program Files\MySQL\MySQL Server 8.0\lib中的libmysql到
D:\software\program\QT\QT_5.14.2\5.14.2\mingw73_64\bin
好啦,所有移植都完成了,下面我们验证一下: -
验证,输入如下函数运行工程,窗口答应connect su***essed!说明连接成功。
与ODBC连接不同的是,这里addDatabase函数内参数是:“QMYSQL”,而ODBC连接参数是“QODBC”。
void MysqlClass::connectMysql(void)
{
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("firstdat");
db.setPort(3306);
db.setUserName("root");
db.setPassword("123456");
db.open();
if(!db.isOpen()){
QMessageBox::critical(0, "error", "connect failed");
}else{
qDebug()<<"connect su***essed!"<<endl;
}
}
3.可能出错的地方:
有时候经过上述步骤可能还是出错,有可能是你的电脑只有重启才能更新环境变量,**可以试着把电脑重启,会有惊喜发生。**不建议在其他地方下载软件,毕竟这两个都是免费下载的,官方的不容易出错。