Qt连接MySQL
1.为什么会记录这个问题。
QT众所周知是一个开源的,以C++为底层的可视化工具库,基本的C++在平时的练习阶段都只是命令行的黑窗口程序,但是使用QT可以做到可视化,据我所知,常见的音乐播放器,比如网易云音乐就是QT来实现的。大多数时候我们学习的过程也是借鉴,然后我遇到了把别人的代码拉下来之后跑不起来的问题,后来经过不断的尝试,终于搞清楚是MYSQL数据库的问题。
QT对MYSQL数据库真的不太友好,班上同学也在做毕业设计,有用Python的,有JS的,这些语言在连接数据库的时候都非常的简单,基本不会出太大问题,不像QT竟然还要编译MYSQL的一个文件,DLL动态库也要匹配。
不过好在,花了将近很久很久的时间,还是找到了方法,网上的方法也很多,但是可用的真的很少。我这里记录的也是回忆版,怕再装一次我又装不对了。
2.找一个需要连接MYSQL的程序。
我们拿到代码之后编译其中的Pro文件,就会有一些报错
这个报错就是因为MYSQL还没有连上QT
3.QT和MYSQL版本
QT我发现好多人都是用的5.12这个版本,所以选它就好了,我用的5.19也连上了,所以版本不是主要问题。
然后MYSQL去官方下载即可,我用的8.0.
需要注意的一点就是QT安装的时候记得装上64位的编译器,然后SQL也下载64位的,如果都硬要下32位也不是不可以,反正就是要匹配上。
再一个MYSQL的可视化工具我选的SQLyog,因为是免费的,Navicat我知道它更好用,但是它收费,大家也尽量不要下载破解版,要是在公司更别瞎下,不然公司都被告破产。
具体的安装流程大家就麻烦看一下其他文章,我写也写不出他们那种10w+的浏览量,就不增加工作量了。
4.编译SQL的pro文件
4.1 第一步打开msql.pro
**Qt源码路径(我的路径):D:\MyQt\5.14.2\Src\qtbase\src\plugins\sqldrivers\mysql
我的路径是安装Qt时就安装了Qt的源码,当安装Qt时没有安装Qt源码,须手动下载源码,下载完成后解压到一个没有中文的路径,根据上方给出的路径依次找到我们的mysql文件夹下的pro文件。
将这个文件夹下的mysql.pro文件使用Qt Creator打开,打开时会提示你使用什么编译在这里我使用 MinGW 64-bit 来编译,因为我MySQL安装的是64位的,所以使用64位的MinGW编译。
然后打开就是这个样子
![](https://img-blog.csdnimg.cn/20201201212512736.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4ODMyNDUw,size_16,color_FFFFFF,t_70#pic_center)
4.2 第二步
第二步注释掉
QMAKE_USE += mysql
没有注释它,编译的时候就会产生一个错误: error: Library ‘mysql’ is not defined.
4.3 第三步
添加MySQL中include文件夹,引用MySQL安装路径lib文件夹下的libmysql.lib静态库
#这里的路径是MySQL安装路径下的include文件夹哦,记得替换成自己的MySQL安装路径哦
INCLUDEPATH +="D:\MySQL\include"
或者
INCLUDEPATH += D:\\MySQL\\include
#在这里引入静态库,写绝对路径好一点,不容易发生一些莫名其妙的错误(会弄的大佬除外)
#记得替换成自己的路径
LIBS +="D:\MySQL\lib\libmysql.lib"
或者
LIBS += D:\\MySQL\\lib\\libmysql.lib
4.4 第四步
这一步可以省略,但是为了方便,建议不要省略这一行代码哦。
# 将我们编译好的文件放在这个项目,就是mysql文件夹下的myLib文件夹内
#将我们编译好的文件放在这个项目,就是mysql文件夹下的myLib文件夹内
DESTDIR = ../mysql/myLib/
当我们四步都做完之后,就是以下的样子
![](https://img-blog.csdnimg.cn/20201202082611933.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4ODMyNDUw,size_16,color_FFFFFF,t_70#pic_center)
4.5 第五步:编译
左下角的“锤子”按钮,完成后,我们打开mysql文件夹,在pro文件右键选择在"Explorer中显示",就可以打开mysql文件夹
mysql文件夹下
myLib文件夹下,就会有三个文件(若没有或不够三个文件,请再次编译一次,有时候需要编译两次才会出现),把这三个文件复制到我们的Qt安装目录下对应的编译器(构建套件Kit)的插件的sql驱动文件夹下…
如:D:\MyQt\5.14.2\mingw73_64\plugins\sqldrivers
注意:
记得复制到自己的Qt安装路径下
你使用什么编译就复制到什么编译器(构建套件Kit)下(如:mingw73_64编译的,就放到 \mingw73_64\plugins\sqldrivers 中)
数据库的版本位,跟编译器(构建套件Kit)的版本位要一致的啊
在这篇文章里,我习惯把Qt的构建套件(Kit)叫编译器哦,我说的编译器不是Qt Creator,搞清楚了哦。
5.将MYSQL文件导入,构建出表
首先SQlyog连上MYSQL,这个网上找,很多。
然后导入文件,先新建一个文件在root@localhost下,名字自己随便起。
然后导入
有报错及时处理,不然程序跑不起来的
导入成功之后表也就都建成了,然后进入最后一步。
6.修改QT代码
别人的项目中有一些代码还是需要进行修改的,比如我这个里面有个connection.h文件里面连接MySQL的一些参数,一定是要匹配上的
bool connectDatabase()
{
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost"); //主机名称,如localhost
db.setDatabaseName("ordersysData"); //数据库名称
//db.setPort(dataBasePort); //数据库端口号
db.setUserName("root"); //用户名称
db.setPassword("123456"); //用户密码
db.open();
if(db.isOpen())
{
return true;
}
else
{
return false;
}
}
#endif // CONNECTION_H
7.运行
配置到这里,基本就完成了,直接编译再运行,项目也就跑起来了,没有QMYsql not loaded来卡眼睛了,还有database not open 这个报错也很卡眼睛。
相关文章
- Error connecting to database [Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13)]
- MySQL 安装步骤
- Navicat Premium连接MySQL 1251错误和Mysql初始化root密码和允许远程访问
- Qt-qt creator 运行 出现 "can not open .... jom for write 解决方案
- QT-Qt设置背景图片
- QT-Qt界面居中显示
- 磁盘爆满导致MySQL无法启动:Disk is full writing './mysql-bin.~rec~' (Errcode: 28). Waiting for someone to free space...
- 【MySQL】Can't get stat of './mysql/slow_log.CSV' (Errcode: 2)
- 【MySql】mysql 字段个数的限制
- 【MySql】mysql 的权限体系介绍
- [MySQL]查看用户权限与GRANT用法
- navcat导入mysql.sql出现:2006, 'MySQL server has gone away'
- MySQL选择数据库use与mysql_select_db使用详解
- php分享二十:mysql优化
- Java通过mysql-connector-java-8.0.11连接MySQL Server 8.0遇到的几个问题
- mysql乐观锁总结和实践(转)
- MYSQL错误解决:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
- [root@master mysql]# mysql -uroot -pjsb ERROR 2002 (HY000): Can't connect to local MySQL server thro
- CentOS下httpd下php 连接mysql 本机可以,外网报错Could not connect: Can't connect to MySQL server on '127.0.0.1' (13)2003 原因解析
- Mysql:Error Code 1235,This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
- 'MySQLConverter' object has no attribute '_navigablestring_to_mysql'
- PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)--续
- PHP连接MySQL数据库的三种方式(mysql、mysqli、pdo)
- [转]MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
- vs2015中无法设置Qt版本,qt project setting 是灰色,Qt无法编译ui文件
- qt交叉编译报错::-1: error: The Qt version is invalid: Qt version is not properly installed,please run make
- Mysql报错:Can't connect to local MySQL server through socket '/tmp/mysql.sock'
- QT连接MySql