通俗易懂玩QT:QSql学习

QT之QSql学习

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

一、环境介绍

Qt 版本:Qt 5.11.2(32位)
通俗易懂玩QT:QSql学习_第1张图片

MySQL 版本:MYSQL8.0.22(64位)
通俗易懂玩QT:QSql学习_第2张图片

二、连接 MySQL 数据库

以下为连接步骤:

  1. 在 pro 或者 pri文件中引入QT 的 sql 数据库模块:
//修改之前
QT       += core gui
//修改之后
QT       += core gui sql
  1. 在文件头部或者头文件中引入 QSql 模块:
#include		//数据库驱动
#include			//数据库查询
  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:QSql学习_第3张图片
网上百度了一下,原因出在 QT 安装路径下的 bin 文件夹中缺少 libmysql.dll 文件,将 mysql 安装路径下 lib 文件夹中的 libmysql.dll 文件复制到 QT 安装路径下的 bin 文件夹下,再次运行,运行结果还是一样报错 QMySQL driver not loaded。
通俗易懂玩QT:QSql学习_第4张图片
又继续上网百度,终于查明了问题所在,MySQL 是 64 位的,Qt 却是 32 位的,两个软件位对不上号,所以再次报错,最后小编找了一个 32 位下的 libmysql.dll 文件,放置 QT 安装路径下的 bin 文件夹下,再次运行,运行成功,这里就不展示截图了。

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

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

你可能感兴趣的:(QT学习,mysql,qt,qt5)