Qt连接MySQL数据库

本文详细介绍了如何在Qt5.12环境下连接MySQL8.0数据库,包括修改Qt源码、编译MySQL插件、复制库文件到相应目录,以及进行数据库连接测试的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我用的是Qt5.12与MySQL8.0的版本
第一步
在Qt的安装目录下找到源码文件夹,找到MySQL的插件文件夹,例如:
D:\qt\5.12.0\Src\qtbase\src\plugins\sqldrivers\mysql
找到mysql.pro这一个Qt项目文件,双击打开。

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

include(../qsqldriverbase.pri)

具体更改为:
将第6行注释掉

#QMAKE_USE += mysql

添加

win32:LIBS += -L $$quote(C:/Program Files/MySQL/MySQL Server 8.0/lib) -llibmysql

INCLUDEPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/include)

DEPENDPATH += $$quote(C:/Program Files/MySQL/MySQL Server 8.0/include)

加$$quote是因为博主MySQL的安装路径中有空格,如果没有空格可以不加;第一个地址是你MySQL安装的位置中lib的位置,第二、三个是你MySQL中lib文件夹的上一级;

编译之后,会出现这个界面,表明你已经成功了,关闭窗口。
在这里插入图片描述
第二步
编译此项目,当项目编译完成之后,在Qt文件夹的同级目录下寻找plugins文件夹打开sqldrivers文件夹,例如:D:\plugins\sqldrivers;
在这里插入图片描述
将上面的文件复制到Qt的编译器的插件目录中,例如:D:\qt\5.12.0\mingw73_64\plugins\sqldrivers
在这里插入图片描述
第三步
将MySQL的动态库复制到Qt的bin目录下:
首先,我们在Mysql中找到lib文件夹:
例如:C:\Program Files\MySQL\MySQL Server 8.0\lib,找到libmysql.dll

将其复制到Qt的bin目录中:例如:D:\qt\5.12.0\mingw73_64\bin,注意编译器不要选错;
在这里插入图片描述
到这里配置就完成了,可以进行MySQL连接的测试。

第四步
调试MySQL是否能在Qt中连接:
只需要把连接的MySQL库改为本地的即可。
.pro修改代码

QT       += core gui sql

.cpp文件部分代码,注意自家添加头文件

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("数据库名");
db.setUserName("用户名");
db.setPassword("密码");
bool ok = db.open();
if (ok){
    QMessageBox::information(this, "infor", "success");
}
else {
    QMessageBox::information(this, "infor", "open failed");
    qDebug()<<"error open database because"<<db.lastError().text();
}
//解决中文乱码问题
db.exec("SET NAMES 'UTF-8'");

qt通过ODBC操作数据库
1)查询数据
代码:

//ODBC查询数据
QSqlQuery result = db.exec("查询语句");
while(result.next()){
    qDebug()<<"user_id:"<<result.value("属性0").toInt();
    qDebug()<<"name:"<<result.value("属性1").toString()<<endl;
}

2)插入、更新、删除数据

//ODBC插入数据
result.clear();
bool result_successed = result.exec("插入/更新/删除语句");

if(result_successed){
    qDebug()<<"插入成功!";
}else {
    qDebug()<<"插入失败!";
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值