00. 目录

文章目录

  • 00. 目录
  • 01. 概述
  • 02. 开发环境
  • 03. 数据库驱动
  • 04. 创建数据库连接
  • 05. 数据库简单操作
  • 06. 附录

01. 概述

Qt中的Qt SQL模块提供了对数据库的支持,该模块中的众多类基本上可以分为三层。

驱动层为具体的数据库和SQL接口层之间提供了底层的桥梁;SQL接口层提供了对数据库的访问,其中的QSqlDatabase类用来创建连接,QSqlQuery类可以使用

SQL语句来实现与数据库交互,其他几个类对该层提供了支持;用户接口层的几个类实现了将数据库中的数据链接到窗口部件上,它们是更高层次的抽象,即便不

熟悉SQL也可以操作数据库。如果要使用Qt SQL模块中的这些类,需要在项目文件(.pro文件)中添加QT += sql这一行代码。对应数据库部分的内容,大家可以

在帮助中查看SQL Programming关键字。

02. 开发环境

Windows系统:Windows10

Qt版本:Qt5.15或者Qt6

03. 数据库驱动

Qt SQL模块使用数据库驱动来和不同的数据库接口进行通信。由于Qt的SQL模型的接口是独立于数据库的,所以所有数据库特定的代码都包含在了这些驱动中。Qt现在支持的数据库驱动如下图所示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WfTJJ8Qj-1616658483966)(assets/image-20210325152325294.png)]

需要说明的是,由于GPL许可证的兼容性问题,并不是这里列出的所有驱动插件都提供给了Qt的开源版本。下面我们通过程序来查看一下现在版本的Qt中可用的数据库插件。

在.pro文件中添加下面一行

QT += sql

程序示例:

#include <QCoreApplication>#include <QSqlDatabase>
#include <QStringList>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);qDebug() << "Availabel drivers: ";QStringList drivers = QSqlDatabase::drivers();foreach(QString str, drivers){qDebug() << str;}return 0;
}

执行结果:

Availabel drivers:
"QSQLITE"
"QODBC"
"QODBC3"
"QPSQL"
"QPSQL7"

04. 创建数据库连接

下面使用QSLite数据库来进行一个简单的演示,创建一个数据库表,然后连接到数据库,我们更改main.cpp文件的内容如下:

#include <QCoreApplication>#include <QSqlDatabase>
#include <QStringList>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);//创建一个SQLite数据库连接QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName(":memory:");bool ret = db.open();if (ret){qDebug() << "打开数据库成功";}else{qDebug() << "打开数据库失败";}//关闭数据库if (db.isOpen()){db.close();db.removeDatabase(db.databaseName());}return 0;
}

执行结果:

打开数据库成功

05. 数据库简单操作

下面使用QSLite数据库来进行一个简单的演示,创建一个数据库表,然后查找其中的数据并进行输出。我们更改main.cpp文件的内容如下:

#include <QCoreApplication>#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QStringList>
#include <QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);//创建一个SQLite数据库连接QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName(":memory:");bool ret = db.open();if (ret){qDebug() << "打开数据库成功";}else{qDebug() << "打开数据库失败";return -1;}//创建QSqlQuery对象QSqlQuery query;query.exec("create table student(id int primary key, name varchar)");query.exec("insert into student values(1, 'xiaoming')");query.exec("insert into student values(2, 'xiaogang')");query.exec("insert into student values(3, 'xiaohong')");//查找表中id > 2的数据query.exec("select id, name from student where id >= 2");while(query.next()){int id = query.value(0).toInt();QString name = query.value(1).toString();//输出两个值qDebug() << id << " " << name;}//关闭数据库if (db.isOpen()){db.close();db.removeDatabase(db.databaseName());}return 0;
}

执行结果:

打开数据库成功
2   "xiaogang"
3   "xiaohong"

06. 附录

6.1 Qt教程汇总
网址:https://dengjin.blog.csdn.net/article/details/115174639

6.2 源码下载
网址:【Qt】数据库实战(一).rar

【Qt】数据库实战(一)相关推荐

  1. 【Qt】数据库实战之QSqlRelationalTableModel

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. QSqlRelationalTableModel外键 04. QSqlRelationalDelegate委托类 05. ...

  2. 【Qt】数据库实战之QSqlTableModel模型

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. QSqlTableModel基本操作 04. QSqlTableModel修改操作 05. QSqlTableModel查 ...

  3. 【Qt】数据库实战之QSqlQueryModel

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. QSqlQueryModel查询模型 04. QSqlQueryModel常用操作 05. QSqlQueryModel自 ...

  4. 【Qt】数据库实战(三)

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 增删改查操作 04. 名字绑定和位置绑定 05. 程序示例 06. 批处理操作 07. 事务操作 08. 附录 01. 概 ...

  5. 【Qt】数据库实战(二)

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. 连接到数据库 04. 操作结果集 06. 附录 01. 概述 SQL即结构化查询语言,是关系数据库的标准语言.前面已经在Q ...

  6. 深入浅出Qt数据库编程:从基本操作到高级技巧

    深入浅出Qt数据库编程:从基本操作到高级技巧 (Demystifying Qt Database Programming: From Basic Operations to Advanced Tech ...

  7. Qt项目实战:MP3音乐播放器

    音乐播放器逻辑   首先通过打开文件,获取文件夹下mp3文件的名字,将其存入QTableWidget控件下,通过双击QTableWidget空间中的内容,播放相应的mp3音乐文件,同时通过使用QMed ...

  8. shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)

    shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)Shell脚本与MySQL数据库交互(增删改查)# 环境准备:安装mariadb 数据库 [root ...

  9. Qt数据库操作(三) -- 使用SQL模型类

    文章目录 Qt数据库操作(三) -- 使用SQL模型类 1.SQL查询模型 2.SQL表格模型 3.关系表格模型 Qt数据库操作(三) – 使用SQL模型类 Qt 提供了3个高级的类来访问数据库,分别 ...

最新文章

  1. html5 作业调度,Net作业调度(五)—quartz.net动态添加job设计
  2. LaTeX技巧如何拆分源文件并且分别编译
  3. java实现从头部及尾部删除指定长度字符
  4. python给动态变量赋值_python 动态的定义变量名,并给其赋值
  5. 使用Python爬取mobi格式电纸书
  6. sqlserver 累计数量_用sqlserver查询累计值
  7. My.Ioc 代码示例——如何使用默认构造参数,以及如何覆盖默认构造参数
  8. html远程连接mysql_mysql允许远程连接
  9. Unity与UE4引擎源码内使用到的第三方库的比较
  10. Mybatis缓存实现原理
  11. (一)抖音快手短视频去水印原理分析
  12. css 图片放大1.2倍,什么是二倍图?怎样使用二倍图?
  13. Mac 下如何解压 bin 文件
  14. 2022 面试必刷 461 道大厂架构面试真题汇总 + 面经 + 简历模板
  15. python操作word文档
  16. ts中的never类型
  17. 朴素贝叶斯算法原理以及python实现
  18. 小写数字转换成大写数字
  19. excel表格怎么调整行高和列宽_wps表格课程08|调整行高列宽
  20. 波段合成,去除黑边并提取土地利用数据....下

热门文章

  1. Python3.4连接Mysql
  2. c#可移动不规则窗体
  3. RGB to HSB or RGB to HSL
  4. DotnetCharting
  5. 部署redis mysql_【服务器部署Redis、Mysql等】-解决方式
  6. apscheduler 脚本执行失败_Bash编程入门-3:数学运算及脚本
  7. mysql 插入 删除_mysql插入、修改、删除
  8. 2012届华为校园招聘机试题
  9. OpenCV计算机视觉实战(Python版)资源
  10. vs编译应用程序不依赖运行vs环境