0


QT连接MySQL数据库

前言:本人QT小白一枚,因为项目需要,所以最近要写QT的项目。其中有一个功能需要连接MySQL的数据库。全网都快搜烂了,文章的内容千篇一律,而且毫无卵用,真是是让人非常头疼…所以我决定将自己的失败经验分享给大家。献丑了各位。(示例源码放在最后了)

第一步、首先你电脑得有mysql的数据库,还有就是Qt Creator,如果都没有的话你先去把这俩东西装上了之后再来看这篇文章吧。
第二步、我在很多文章都看见了这句话我看见的第一步
就是在你的项目pro里加入

QT += sql

。到这一步没问题。

(QT += core gui sql)

QT+=多个用空格分割,这样写也可以,因为你的pro文件里可能已经有

QT += core gui

之类的。

第三歩、
我看见的第二步
这里说在mainwindow.h文件中添加头文件。这个地方对小白真是不友好。小白完全就是照着做,结果还是不行。第三歩现在说有点早,我会放在第四步一起说明。

第四步、

voidMainWindow::on_pushButton_clicked(){
QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL");

    db.setHostName("localhost");

    db.setPort(3306);

    db.setDatabaseName("你的数据库");

    db.setUserName("数据库账号");

    db.setPassword("数据库密码");if(!db.open()){qDebug("Sql connect failed.");qDebug()<< db.lastError().text();QMessageBox::warning(nullptr,"警告","无法连接数据库");}else{qDebug("Sql connected.");
        QSqlQuery result = db.exec("select * from station");for(int i=0; i<result.size(); i++){
        result.next();qDebug()<< result.value("station_name").toString()<<'\t'<< result.value("station_num").toString()<<'\t'<< result.value("id").toString()<<'\t'<< result.value("city").toString()<< endl;}}}

如果第三歩照做的话,到这里的QMessageBox和qDebug就会报错,因为第三歩就没引入他俩的头文件当然报错啊。我展示的这个方法是个升级版。链接成功之后还可以查个表测试一下。我这个方法需要在头文件中引入以下头文件

#include<QSqlDatabase>#include<QMessageBox>#include<QDebug>#include<QSqlError>#include<QSqlQuery>

到这里你以为就完事了吗?这才刚开始。如果你是欧皇的话就当我没说。

QSqlDatabase: QMYSQ driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7

运行完之后大概率会看见这样的报错。总而言之就是告诉你没mysql驱动,第二行是告诉你你有这些驱动,仔细看一下就是没有MYSQL的。

检查QT目录中Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers目录下,观察是否存在qsqlmysql.dll文件。如果没有就需要我们自己去生成一个。
在这里插入图片描述

网上的教程直接告诉你修改mysql.pro 但是找了半天也不知道这个文件在哪。
qt源码下载地址:点击下载
在这里插入图片描述
找到适合自己的源码进行下载,我的是5.14.2版本。(下载路径不能有中文! 不然生成不了!)
下载完之后,找到5.14.2\qt-everywhere-src5.14.2\qtbase\src\plugins\sqldrivers\mysql,打开工程mysql.pro,修改mysql.pro文件

TARGET = qsqlmysql
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
# !!你安装的mysql的lib路径
LIBS +=-L $$quote(E:/mysql/mysql/mysql-8.0.23-winx64/lib)-llibmysql
# !!你安装的mysql的include路径
INCLUDEPATH += $$quote(E:/mysql/mysql/mysql-8.0.23-winx64/include)
# !!你安装的mysql的include路径
DEPENDPATH += $$quote(E:/mysql/mysql/mysql-8.0.23-winx64/include)include(../qsqldriverbase.pri)

下面这个是我改完之后的精神面貌
在这里插入图片描述
改好了之后点这个小锤子构造项目
在这里插入图片描述
或者Ctrl+b构造一下。

这样你会看见mysql的同级目录下多了一个plugins
在这里插入图片描述
在这里插入图片描述

这俩就是我们要mysql驱动。把他俩复制到Qt\Qt5.14.2\5.14.2\mingw73_64\plugins\sqldrivers文件下面。

最后一步、
mysql/lib内的动态库文件libmysql.dll复制,拷贝到Qt\Qt5.14.2\5.14.2\mingw73_64\bin
的文件夹内
在这里插入图片描述
最后执行成功,查出数据。
在这里插入图片描述
**

本人示例源码:点击下载

标签: qt 数据库 mysql

本文转载自: https://blog.csdn.net/qq_41603808/article/details/126139960
版权归原作者 火影忍者长门 所有, 如有侵权,请联系我们删除。

“QT连接MySQL数据库”的评论:

还没有评论