SQLITE3数据库读写助手(3)

概述

  • 本文将介绍前文中类SqliteExt的用法
  • SqliteExt类功能就三大类:
    • 读取slqite中表格的数据
    • 写入用户表格中的数据到文件
    • 其他功能: 执行sql语句接口......
  • 思路: 获取数据库中表每个字段的类型,根据类型移动指针给结构体赋值
  • 存放数据的内存需要按照1字节对齐, 例如,下面的结构体stTableCommonIdStr存放表common中的数据, 需要设置1字节对齐
#pragma pack(1)
struct stTableCommonIdStr
{
	int id_;
	QString name_;
};

#pragma pack()

而表common的结构为:
common中的数据为

  • SqliteExt的特点(相对常规数据库读写)

    • 读取不用调用方编写sql语句, 模块内部自动完成
    • 写入数据不用调用方编写sql语句, 模块内自动完成
  • SqliteExt不足
    后期有时间再优化与改进,先把V1.00.000开发出来, 为后面重构铺垫。

    • 目前支持的数据库字段较少,包括: INTEGER, TEXT , DOUBLE
    • 基于Qt实现,不满足通用c++使用场景

设计之初

  • sqlite数据库内容,无论是读取还是写入,都需要手动编写sql语句交由特定的函数执行
  • 如果新增字段, 就需要编写对应的字段的读写,如果遗漏, 则无法完成对应的功能
  • 单个项目的配置项可能很多,编写sql语句较为麻烦
  • 多个项目使用, 无法达到复用的目的
  • 于是,读写任意sqlite数据库表数据的念头产生了
  • 自己用的都是小项目, 使用sqlite作为配置文件,简单方便,由于项目逐渐增多,项目的配置维护成本增加

SqliteExt 使用顺序

按照下面的顺序:

  • A. 初始化,传递指定的数据库文件及相关参数
  • B. 读写表数据
  • C. 师傅资源

SqliteExt 头文件函数介绍

initialized_

功能

- 初始化函数,需要调用该函数完成模块初始化后, 方可读写数据库中的内容

使用范例

/// 0. 读取界面当前选择的是哪种
oct_sqlite::stSQLInit st_init;
{
    /// 指定打开的数据库文件
    st_init.str_sqlite_file_	= str_file;
    /// 指定数据库的编辑策略
    st_init.en_es_				= oct_sqlite::ES_MANUAL_SUBMIT;
    /// 本次需要读取数据库中的哪种数类型
    st_init.en_tt_				= static_cast<oct_sqlite::enTableType>(ui.combo_load_type->itemData(ui.combo_load_type->currentIndex()).toInt());
}

/// 1. 执行初始化
int sql_ext_init_ret			= psqlite_ext_->initialized_(st_init);
/// 2. 检查初始化结果
if (0							!= sql_ext_init_ret)
{
    return;
}

carry_on_sql_

功能

- 执行sql语句

函数原型

/// -------------------------------------------------------------------------------
/// @brief:		执行sqlite语句
/// @param: 	const QString & str_sql - sql语句
/// @param: 	const QString & str_table_name - 对数据库的那张表执行 
///  @ret:		int
///				0 - 成功
///				1 - 失败, 数据库没有初始化
///				2 - 失败, 参数str_sql 为空
///				3 - 失败, 数据库中没有[str_table_name]这张表
///				5 - 失败, 对应的数据库model没有得到
///				6 - 失败, sql语句错误
///				7 - 失败, sql语句执行失败,请检查sql语句
/// -------------------------------------------------------------------------------
int carry_on_sql_(const QString& str_sql, const QString& str_table_name) noexcept;

sql_record_

功能

- 获取sql语句的执行结果

原型

/// -------------------------------------------------------------------------------
/// @brief:		获取sql语句执行结果
/// @param: 	const QString & str_sql - 对应的sql语句
/// @param: 	const QString & str_table_name - 操作哪张表
///  @ret:		QT_NAMESPACE::QSqlQuery*
///					nullptr - sql语句或者没有[str_table_name]对应的表格, 或者创建对应的model错误
///					!= nullptr - 成功
/// -------------------------------------------------------------------------------
QSqlQuery* sql_record_(const QString& str_sql, const QString& str_table_name) noexcept;

uninitialized_

功能

- 释放模块资源,退出前请显示调用

原型

///-------------------------------------------------------------------------------
/// @brief:		释放
///  @ret:		void
///				
/// -------------------------------------------------------------------------------
void uninitialized_() noexcept;

mapTable

功能

- 调用**initialized_**函数后, 调用该函数,可获得当前表格中的数据结构

原型

/// -------------------------------------------------------------------------------
/// @br
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值