QT操作数据库

时间记录:2024/1/20

一、QT+mysql配置

1.1 环境介绍

Qt Creator5.12.7+Mysql5.5.28+Windows10操作系统

1.2 编译mysql-driver

(1)查看可用的sql-driver

cpp 复制代码
qDebug() << QSqlDatabase::drivers();

输出:("QSQLITE", "QODBC", "QODBC3", "QPSQL", "QPSQL7"),默认QT5.12.7 没有mysql的驱动

(2)编译libmysql.dlllibmysql.lib 文件

1.找到QT源码src目录的qtbase/src/plugins/sqldrivers/mysql目录,打开mysql.pro文件,在QMAKE_USE += mysql前边加"#"号注释此行,然后添加以下代码,mysql的安装路径要做对应的替换

cpp 复制代码
LIBS += -LD:/apps/MYSQL/lib -llibmysql

INCLUDEPATH += D:/apps/MYSQL/include

DEPENDPATH += D:/apps/MYSQL/include

2.打开qsqldriverbase.pri 文件,将include(/qtsqldrivers-config.pri)这一行注释掉

3.编译pro文件生成qsqlmysql.dllsqlmysqld.dll 文件,双击pro文件打开项目,选择套件编译即可

4.将生成的qsqlmysql.dllqsqlmysqld.dll 文件复制到QT相应套件的"\plugins\sqldrivers "路径下

5.编写代码,将mysql 安装目录下的libmysql.dll 文件复制到项目的应用程序同级目录下或者复制到编译套件的bin目录下,发布应用程序时同样需要复制此文件到应用程序同级目录下

二、QT命令行编译项目

(1)调出套件命令行,切换到项目pro文件的目录,输入命令"qmake -project"生成pro文件

(2)打开pro文件,添加使用到的QT模块,然后命令行输入命令"qmake xxx.pro -spec win32-g++ "CONFIG+=debug" "CONFIG+=qml_debug""或者"qmake xxx.pro"生成makefile文件

(3)使用命令"mingw32-make -f Makefile.Debug"来执行make命令生成可执行程序

三、QT连接数据库

(1)在pro文件中添加sql 模块

(2)创建QDatabase 数据库配置对象

2.1 使用静态方法addDatabase 配置数据库驱动"QMYSQL "或"QSQLITE "

2.2 使用方法setHostName 配置mysql数据库的服务器IP地址

2.3 使用方法setPort 配置mysql数据库的服务器端口号

2.4 使用方法setDatabaseName 配置要连接的数据库名称

2.5 使用方法setUserName 配置登录mysql服务器的用户名

2.6 使用方法setPassword 配置登录mysql服务器的密码

(3)使用QDatabase 类的方法open 打开数据库

(4)编写sql语句,然后使用QSqlQuery 类的exec 方法执行固定语句

(5)获取查询结果使用QSqlQuery 类的next 方法判断是否还有下一行数据,判断之后会自动下移一行,value 方法获取行内的数据,传入数字则获取到此行某一列数据,传入字符串则根据获取到此行对应键名的值

(6)批处理操作,根据可变参进行数据处理

6.1 使用QSqlQuery 类的prepare 方法编写sql语句,参数使用?表示,然后使用addBindValue 方法为?绑定值,最后使用execBatch 方法执行sql语句

6.2 使用QSqlQuery 类的prepare 函数编写sql语句,sql语句中的值使用":别名 "代替,然后使用bindValue 函数为别名绑定值,绑定完毕值以后便可以使用execBatch函数进行批处理操作

(7)使用QDatabase 类的close方法关闭数据库连接

四、简单的一些sql语句

(1)创建表

cpp 复制代码
create table if not exists 表名(键名1 键数据类型1,键名2 键数据类型2...);
示例:
create table if not exists user(id int primary key auto_increment,username varchar(20),password varchar(20));  

(2)添加数据

cpp 复制代码
insert into 表名(键名1...) values(值1...);

(3)删除数据

cpp 复制代码
delete from 表名 where 删除条件;
示例:
delete from user where id=2;

(4)修改数据

cpp 复制代码
update 表名 set 键=值,键=值 where 修改条件
示例:
update user set username='admin',password='123456' where id = 1;

(5)查询数据

cpp 复制代码
select 键名 from 表名;
示例1:查询全部数据
select * from user;
示例2:查询指定键的数据
select username as u,password as p from user;
相关推荐
heimeiyingwang14 分钟前
企业供应链 AI 优化:需求预测与智能调度
大数据·数据库·人工智能·机器学习
云泽80819 分钟前
C++ 多态入门:虚函数、重写、虚析构及 override/final 实战指南(附腾讯面试题)
开发语言·c++
仰泳的熊猫24 分钟前
题目1535:蓝桥杯算法提高VIP-最小乘积(提高型)
数据结构·c++·算法·蓝桥杯
yanghuashuiyue1 小时前
lambda+sealed+record
java·开发语言
山岚的运维笔记1 小时前
SQL Server笔记 -- 第73章:排序/对行进行排序
数据库·笔记·后端·sql·microsoft·sqlserver
闻缺陷则喜何志丹1 小时前
【前后缀分解】P9255 [PA 2022] Podwyżki|普及+
数据结构·c++·算法·前后缀分解
XLYcmy1 小时前
智能体大赛 目录
数据库·ai·llm·prompt·agent·检索·万方
盟接之桥1 小时前
盟接之桥EDI软件:API数据采集模块深度解析,打造企业数据协同新引擎
java·运维·服务器·网络·数据库·人工智能·制造
yzx9910132 小时前
Python数据结构入门指南:从基础到实践
开发语言·数据结构·python
消失的旧时光-19432 小时前
智能指针(二):机制篇 —— 移动语义与所有权转移
c++·智能指针