qt 连接 mysql

前期准备

下载mysql 数据库 qt5.13.1使用的是mysql-5.7.25,其他版本没有测试

下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25-winx64.zip

1.编译mysql驱动

===================================================================

进入Qt源目录

D:\Qt\Qt5.13.1\5.13.1\Src\qtbase\src\plugins\sqldrivers\mysql

编辑mysql.pro文件

  1. 去掉 //QMAKE_USE += mysql
  2. 增加代码

LIBS += -LD:/software/mysql-5.7.25-winx64/lib/ -llibmysql
INCLUDEPATH += D:/software/mysql-5.7.25-winx64/include
DEPENDPATH += D:/software/mysql-5.7.25-winx64/include

===================================================================

修改qsqldriverbase.pri文件

返回上一层目录

D:\Qt\Qt5.13.1\5.13.1\Src\qtbase\src\plugins\sqldrivers

修改 include($$shadowed($$PWD)/qtsqldrivers-config.pri)

改为 include($$shadowed($$PWD)/configure.pri)

===================================================================

设置mingw环境变量

增加 D:\Qt\Qt5.13.1\5.13.1\mingw73_64\bin

和D:\Qt\Qt5.13.1\Tools\mingw730_64\bin到环境变量

===================================================================

制作Makefile文件

进入D:\Qt\Qt5.13.1\5.13.1\Src\qtbase\src\plugins\sqldrivers\mysql

依次 执行

qmake 

mingw32-make  

mingw32-make install

校验结果 

D:\Qt\Qt5.13.1\5.13.1\mingw73_64\plugins\sqldrivers目录下,会生成qsqlmysql.dll,qsqlmysqld.dll 两个动态链接库

===================================================================

拷贝驱动

在数据库\mysql-5.7.25-winx64\lib目录下拷贝libmysql.dll到mingw的bin目录

D:\Qt\Qt5.13.1\5.13.1\mingw73_64\bin

===================================================================

项目引入驱动

在工程.pro文件里,添加sql

QT       += core gui sql

===================================================================

编写测试代码

        //一定要注意 如果出现QSqlDatabase: QMYSQL driver not loaded,清理下,重构 还不行的话切换下QMYSQL,QMYSQL3

    db = QSqlDatabase::addDatabase("QMYSQL"); 
    db.setHostName("IP");
    db.setPort(3306);
    db.setDatabaseName("test");

 

<think>嗯,用户想了解如何使用Qt连接MySQL数据库,需要教程、示例代码和配置方法。首先,我得回忆一下Qt连接数据库的基本步骤。记得Qt使用QSql模块来处理数据库,所以需要包含相关的头文件,比如QSqlDatabase和QSqlQuery。然后,用户需要安装MySQL,并确保有相应的驱动。 接下来,可能需要提到驱动的问题。Qt默认可能没有启用MySQL的驱动,需要自己编译或者确保插件可用。比如,用户可能需要检查Qt安装目录里有没有qsqlmysql.dll或者类似的驱动文件。如果驱动不存在,可能需要从源代码编译生成,或者从MySQL的安装目录复制libmysql.dll到Qt的bin目录下,如引用[3]提到的。 然后是配置数据库连接的步骤。创建QSqlDatabase对象,设置数据库类型、主机名、用户名、密码、数据库名等信息。打开连接,并检查是否成功。如果失败,可能需要处理错误信息,比如调用lastError()方法。引用[1]和[2]提到了连接失败时的备选方法,比如使用ODBC,但用户可能更倾向于直接连接。 示例代码部分,应该展示如何建立连接、执行查询和处理结果。比如,用QSqlQuery执行SELECT语句,遍历结果集。同时,要提醒用户正确管理资源,比如关闭数据库连接。 另外,可能需要注意不同版本的QtMySQL之间的兼容性问题,比如是否使用正确的驱动版本。比如,如果Qt是64位的,MySQL的库文件也应该是64位的。还有,部署时需要将必要的dll文件包含进去,避免运行时找不到驱动。 用户可能遇到的常见问题包括驱动未加载、连接参数错误、MySQL服务未启动等。需要给出排查建议,比如检查错误信息,确认MySQL服务器运行状态,验证用户名和密码是否正确,以及网络是否通畅。 最后,生成相关问题,帮助用户深入了解,比如性能优化、事务处理、预处理语句等,这些扩展内容可以引导用户进一步学习。</think>### QT连接MySQL数据库的配置与示例代码 #### 一、环境准备 1. **安装MySQL驱动** - Qt默认未包含MySQL驱动插件`qsqlmysql.dll`,需手动编译或复制: - 从MySQL安装目录(如`C:\Program Files\MySQL\Connector C++ 8.0\lib64`)找到`libmysql.dll`和`libmysql.lib`,复制到Qt的编译输出目录(如`Qt\5.15.2\mingw81_64\bin`)[^3]。 - 验证驱动是否存在: ```cpp qDebug() << QSqlDatabase::drivers(); // 查看支持的数据库驱动 ``` 2. **配置Qt项目文件(.pro)** ```qmake QT += sql ``` #### 二、连接MySQL的代码实现 ```cpp #include <QSqlDatabase> #include <QSqlQuery> #include <QDebug> bool connectMySQL() { QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); // 主机地址 db.setPort(3306); // 端口号 db.setDatabaseName("test_db"); // 数据库名 db.setUserName("root"); // 用户名 db.setPassword("123456"); // 密码 if (!db.open()) { qDebug() << "连接失败:" << db.lastError().text(); return false; } qDebug() << "连接成功!"; return true; } // 执行查询示例 void queryData() { QSqlQuery query; query.exec("SELECT id, name FROM users"); while (query.next()) { int id = query.value(0).toInt(); QString name = query.value(1).toString(); qDebug() << id << name; } } ``` #### 三、常见错误处理 1. **驱动未加载** - 错误提示:`QSqlDatabase: QMYSQL driver not loaded` - 解决方案:确认`libmysql.dll`已复制到正确路径,且与Qt版本位数一致。 2. **连接超时** - 检查MySQL服务是否启动:`sudo service mysql start`(Linux)或通过任务管理器(Windows)。 3. **认证失败** - 使用MySQL命令行验证账号密码:`mysql -u root -p`[^2]。 #### 四、通过ODBC连接(备选方案) 1. 下载ODBC驱动:[MySQL Connector/ODBC](https://dev.mysql.com/downloads/connector/odbc/) 2. 配置数据源后使用: ```cpp QSqlDatabase db = QSqlDatabase::addDatabase("QODBC"); db.setDatabaseName("DRIVER={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Database=test_db;Uid=root;Pwd=123456;"); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值