QT连接MySQL数据库

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

第一步、首先你电脑得有mysql的数据库,还有就是Qt Creator,如果都没有的话你先去把这俩东西装上了之后再来看这篇文章吧。
第二步、我在很多文章都看见了这句话我看见的第一步
就是在你的项目pro里加入 QT += sql。到这一步没问题。(QT += core gui sql)QT+=多个用空格分割,这样写也可以,因为你的pro文件里可能已经有QT += core gui之类的。

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

第四步、

void MainWindow::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
的文件夹内
在这里插入图片描述
最后执行成功,查出数据。
在这里插入图片描述
**

本人示例源码:点击下载

  • 12
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
要在Qt连接MySQL数据库,需要安装MySQL驱动程序。以下是连接MySQL数据库的步骤: 1. 安装MySQL驱动程序 在Qt连接MySQL数据库,需要安装Qt提供的MySQL驱动程序。可以使用Qt Maintenance Tool来安装MySQL驱动程序。打开Qt Maintenance Tool,选择“添加或删除组件”,找到“Qt版本->Qt->Qt 5.x->Qt 5.x MySQL”,然后选择安装。 2. 引入MySQL头文件 在Qt代码中,需要引入MySQL头文件,包括<QSqlDatabase>、<QSqlQuery>和<QSqlError>。可以使用以下代码引入这些头文件: ```c++ #include <QSqlDatabase> #include <QSqlQuery> #include <QSqlError> ``` 3. 连接MySQL数据库 使用以下代码连接MySQL数据库: ```c++ QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); // 设置主机名 db.setPort(3306); // 设置端口号 db.setDatabaseName("database_name"); // 设置数据库名 db.setUserName("username"); // 设置用户名 db.setPassword("password"); // 设置密码 if (!db.open()) { qDebug() << "Failed to connect to database:" << db.lastError().text(); } ``` 其中,QSqlDatabase::addDatabase()函数设置MySQL数据库驱动程序,其参数为“QMYSQL”。然后,设置主机名、端口号、数据库名、用户名和密码,并调用QSqlDatabase的open()函数连接MySQL数据库。如果连接失败,可以使用db.lastError().text()来获得错误信息。 4. 执行SQL查询 连接MySQL数据库后,可以使用以下代码执行SQL查询: ```c++ QSqlQuery query; if (!query.exec("SELECT * FROM table_name")) { qDebug() << "Failed to execute query:" << query.lastError().text(); } while (query.next()) { // 处理结果集 } ``` 其中,QSqlQuery对象用于执行SQL查询,其exec()函数执行查询,next()函数用于遍历结果集。 以上就是Qt连接MySQL数据库的基本步骤。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值