九、Qt C++ 数据库开发

《一、QT的前世今生》

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

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

《五、带登录窗体的demo》

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

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

《九、Qt C++ 数据库开发》

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

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

九、Qt C++ 数据库开发_第1张图片

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

九、Qt C++ 数据库开发_第2张图片

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

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

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

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

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

九、Qt C++ 数据库开发_第3张图片

三、数据库操作类sqliteDb

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

九、Qt C++ 数据库开发_第4张图片

九、Qt C++ 数据库开发_第5张图片

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

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

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

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

九、Qt C++ 数据库开发_第6张图片

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

九、Qt C++ 数据库开发_第7张图片

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

九、Qt C++ 数据库开发_第8张图片

九、Qt C++ 数据库开发_第9张图片

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

九、Qt C++ 数据库开发_第10张图片

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

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

九、Qt C++ 数据库开发_第11张图片

五、用户管理窗体

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

九、Qt C++ 数据库开发_第12张图片

查询用户

九、Qt C++ 数据库开发_第13张图片

删除用户

九、Qt C++ 数据库开发_第14张图片

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

九、Qt C++ 数据库开发_第15张图片

六、动态创建及调用窗体

九、Qt C++ 数据库开发_第16张图片

七、运行效果

九、Qt C++ 数据库开发_第17张图片

九、Qt C++ 数据库开发_第18张图片

九、Qt C++ 数据库开发_第19张图片

九、Qt C++ 数据库开发_第20张图片

你可能感兴趣的:(QT,C++,qt,c++,数据库)