通俗易懂玩QT:QSql学习

QT之QSql学习

最近,因为公司的业务需求,需要使用 Qt 操作 MySQL 数据库,特意学习了一下,这里分享给大家。

一、环境介绍

Qt 版本:Qt 5.11.2(32位)
Qt 版本号

MySQL 版本:MYSQL8.0.22(64位)
MySQL 版本号

二、连接 MySQL 数据库

以下为连接步骤:

  1. 在 pro 或者 pri文件中引入QT 的 sql 数据库模块:
//修改之前
QT       += core gui
//修改之后
QT       += core gui sql
  1. 在文件头部或者头文件中引入 QSql 模块:
#include<QSqlDatabase>		//数据库驱动
#include<QSqlQuery>			//数据库查询
  1. 定义一个 QSqlDatabase 对象,并赋值一个成员变量,创建 MySQL 数据库驱动:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  1. 对 QSqlDatabase 对象进行连接配置:
db.setHostName("localhost");	//主机地址
db.setDatabaseName("test");		//数据库名称
db.setUserName("root");			//进入数据库的用户名
db.setPassword("123456");		//进入数据库的密码
db.setPort(3306);				//数据库使用的端口号
  1. 用 Qt 创建一个 MySQL 数据库连接:
db.open();

连接的返回值为一个 bool 数据,这里可以根据返回的 bool 数据进行一个判断,值为 true 则进行下一步操作,提示否则报错,下面是一段参考代码:

if(db.open()){
	//后续操作
}
else{
	qDebug() << "数据库连接错误!";
}
  1. 创建一个 QSqlQuery 对象,用于自行后续的增删查改操作:

a) 增添数据:
预处理添加数据方式一:

QSqlQuery query;
query.prepare("insert into users (uname, pwd) values (:uname, :pwd)");
query.bindValue(":uname", "root");
query.bindValue(":pwd", "123");
query.exec();

预处理添加数据方式二:

QSqlQuery query;
query.prepare("insert into users (uname, pwd) values (:uname, :pwd)");
query.bindValue(0, "root");
query.bindValue(1, "123");
query.exec();

预处理添加数据方式三:

QSqlQuery query;
query.prepare("insert into users (uname, pwd) values (?, ?)");
query.bindValue(0, "root");
query.bindValue(1, "123");
query.exec();

预处理添加数据方式四:

QSqlQuery query;
query.prepare("insert into users (uname, pwd) values (?, ?)");
query.addBindValue("root");
query.bindValue("123");
query.exec();

b) 删除数据:

QSqlQuery query;
query.prepare("delete from users where uname = ?");
query.addBindValue("root");
query.exec();

c) 查询数据:

QSqlQuery query("select * from users");
while (query.next()) {
    QString uname = query.value("uname").toString();
    QString pwd = query.value(1).toString();
    qDebug() << uname + ";" + pwd;
}

d) 修改数据:

QSqlQuery query;
query.prepare("update users set pwd = '123456' where uname = ?");
query.addBindValue("admin");
query.exec();
  1. 关闭数据库连接:
db.close();

三、解决 QT 自带的 Bug

完成以上操作后,就可以点击运行了,但是运行结果让人意外,报错 QMySQL driver not loaded。
直接运行
网上百度了一下,原因出在 QT 安装路径下的 bin 文件夹中缺少 libmysql.dll 文件,将 mysql 安装路径下 lib 文件夹中的 libmysql.dll 文件复制到 QT 安装路径下的 bin 文件夹下,再次运行,运行结果还是一样报错 QMySQL driver not loaded。
第一次修改后运行
又继续上网百度,终于查明了问题所在,MySQL 是 64 位的,Qt 却是 32 位的,两个软件位对不上号,所以再次报错,最后小编找了一个 32 位下的 libmysql.dll 文件,放置 QT 安装路径下的 bin 文件夹下,再次运行,运行成功,这里就不展示截图了。

这里可以下载 libmysql.dll 文件。

学习分享,一起成长!接触QT的时间不长,目前差不多有两个月了,有不足之处,欢迎大佬指出来,我会进行更正。有问题可以发送邮件至 mjzhutianxiu@163.com ,不定时上线查收。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混子还在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值