九、Qt C++ 数据库开发

《一、QT的前世今生》

《二、QT下载、安装及问题解决(windows系统)》
《三、Qt Creator使用》 ​​​

《四、Qt 的第一个demo-CSDN博客》

《五、带登录窗体的demo》

《六、新建窗体时,几种窗体的区别》 

《七、Qt 信号和槽》 
八、Qt C++ 毕业设计

九、Qt C++ 数据库开发

本章节我们介绍数据库相关的操作,并开发一个用户管理的功能,包括用户的增、删、改、查。通过本章节,大家可以学会如何使用sqlite数据库,及sqlite数据库操作函数的封装,还有动态调用窗体、新建窗体的布局等内容。

一、在pro文件中加入sql的引用。

二、在全局变量头文件中,加入对sqliteDb类的声明

这行代码 extern sqliteDb dbSqlite 的意思是在global.h中声明了一个名为 dbSqlite 的外部变量类。关键字 extern 表示这个声明是外部的,即它的定义(分配内存空间)将在其他源文件中。

这样的声明通常用于在多个源文件之间共享同一个全局变量。在包含这个声明的源文件中,你不需要为 dbSqlite 分配内存空间,只需要告诉编译器它的存在,并在其他源文件中提供其定义。

在main.cpp源文件中定义这个变量,并初始化打开连接了数据库:

sqliteDb dbSqlite; // 提供外部变量的定义

这样在另的窗体文件中不需要再声明及实例化sqliteDb类,dbSqlite 就可以在多个源文件中使用,而且这些源文件共享同一个 dbSqlite 实例。这在大型项目中,多个源文件需要访问同一个全局变量时很有用。可以保证本程序和数据库文件的连接唯一性,不会在每一个用到数据库的地方都打开一个连接,这样会造成资源混乱。

三、数据库操作类sqliteDb

用于与 SQLite 数据库进行交互。包含一些方法和属性,以便执行数据库查询、插入、更新和删除等操作。下图展示包含的基本结构:

通过将数据库打开、关闭、查询、插入、更新和删除等操作封装成类,主要优势包括:

1.模块化和结构清晰: 类的使用使得数据库操作的相关代码可以被组织成一个模块,使得代码结构更加清晰、模块化。这有助于降低代码的复杂性,使得代码更易读、易维护。

2.代码复用: 通过封装数据库操作到一个类中,可以轻松地在应用程序的不同部分重复使用相同的数据库操作逻辑。这样可以避免在代码中多次编写相同的数据库连接、查询和更新的代码,提高了代码的可重用性。

以下是对sqlite操作类核心代码的说明

将原生的query对象转换成便于操作的QList> 哈希集合:

四、登录窗体中数据库的使用

以下这种select 方式 不推荐,只会从一定程度上避免有sql注入漏洞,大家在正式的软件开发中需要引起注意。大家在程序中拼写sql语句时,一定要注意单引号和双引号的使用区别,有的同学稍不留神多写一个单引号,sql语句就不会被执行正确。

大家在写sql语句的时候,如果不太熟悉,可以建议下载一个sqlite数据库的编辑工具,如SQLite Expert

很好用的一个小工具,能更直观的编辑数据库文件。下载地址:https://download.csdn.net/download/zhouhui1982/88743983

五、用户管理窗体

别忘了在上边引用#include "global.h" 因为跟数据库有关的全局变量在此文件中。否则下边的dbSqlite变量会报错。

查询用户

删除用户

修改和新增用户在另一个窗体frmuseredit中

六、动态创建及调用窗体

七、运行效果

相关推荐

  1. 数据开发(Hadoop面试真题-卷

    2024-01-16 12:54:03       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-16 12:54:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-16 12:54:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-16 12:54:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-16 12:54:03       20 阅读

热门阅读

  1. 每日算法打卡:地宫取宝 day 16

    2024-01-16 12:54:03       25 阅读
  2. 每日算法打卡:波动数列 day 16

    2024-01-16 12:54:03       36 阅读
  3. 云原生周刊:OpenTofu 宣布正式发布 | 2023.1.15

    2024-01-16 12:54:03       41 阅读
  4. [NOIP2009 普及组] 分数线划定#洛谷

    2024-01-16 12:54:03       31 阅读
  5. 做数据缓存,Map 比List更具有优势

    2024-01-16 12:54:03       38 阅读
  6. python多线程和多进程内存共享方式

    2024-01-16 12:54:03       34 阅读
  7. Linux新建文件详解

    2024-01-16 12:54:03       39 阅读
  8. Nginx虚拟主机配置

    2024-01-16 12:54:03       33 阅读
  9. 什么是本地IP?服务器本地IP有哪些优势?

    2024-01-16 12:54:03       35 阅读
  10. Pandas实战100例 | 案例 52: 重命名列

    2024-01-16 12:54:03       39 阅读