dbassist 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
dbassist 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
dbassist 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Mulan
开发语言 C/C++ 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 solider12
适用人群 未知
收录时间 2023-12-04

软件简介

dbassist 是一个 C 语言封装了 MySQL 预处理的框架,包括 MySQL 预处理表单的 CRUD 和多表的联合查询以及多表的嵌套查询。

MySQL 预处理的优点在于

1.安全性高.预处理变量用占位符?表示,与sql语句是分别传递给服务器,安全性相对比较高.

2.占用流量低.在sql语句已经发送的情况下,只要发送绑定变量的不同值即可.

然而mysql预处理也有一个很大的缺点,就是大量变量绑定的代码,可读性极差,冗余重复代码很多.

我们思考预处理如何做到扬长避短,将冗余代码不放在mysql预处理封装的代码中,而是放在结构体初始化的文件中.这样在结构体初始化的繁琐要好过预处理时的繁琐.

然而结构体的成员变量如何与预处理的bind关联呢?

答案无非是数组.输入数组关联预处理的绑定参数,输出数组关联预处理的绑定结果.

数组的数据来源是结构体,结构体如何将成员变量交接给数组呢?

于是我们冥思苦想发现这个预处理的封装是系统性的工程.需要借助第三方的一些代码完成任务.比如想要把结构体成员对象存取,最好的办法不外乎是hashmap,对输出结果的返回最通用的结构体不外乎是json.因此需要引入hashmap和json.

这样还需要设计一个场景,存取结构体成员,于是我们想到了数据表的crud通用操作.接下来就是设计各个crud的函数用hashmap存取结构体变量.大致流程如此.

这样花费了一些时间,完成了一个轻量级c语言操作mysql预处理的框架,除封装了预处理变量绑定的代码,还封装了crud等sql语句的拼接代码,实现单表的crud,以及多表的联合查询以及嵌套查询功能.

代码参考开源仓库

https://gitee.com/solider12/lazy-cats-code-warehouse/blob/master/dbassist

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(1) 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
1 评论
2 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部