广州大彩串口屏论坛_大彩开发者交流论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 581|回复: 0

【半成品数据库引擎】开源-基于csv文件的引擎

[复制链接]

61

主题

221

帖子

2782

积分

版主

大彩爱好者Q群14769485

Rank: 7Rank: 7Rank: 7

积分
2782
QQ
发表于 2025-3-10 19:04:38 | 显示全部楼层 |阅读模式

原理:使用移动文件指针的方式进行读写指定行的内容,查询时是比较暴力的字节从文件第2行开始循环读取到文件尾部。
此源码需要熟悉:Lua脚本操作、文件操作、文件指针的运用
写了好久了,因为实体屏上项目了,手头没有实体屏,windows总把换行符给我改成\r\n总崩程序,根据当前lua中特性read("*l")只支持\n的换行符,读到\r\n时会出错,这个在实体屏幕里不会出现这个问题。上机可以直接使用
请完全统一按屏幕中用到的换行符进行编写即可完整实现。

创建表文件:
定义表字段和类型
local 表结构= {
        {"user", "string"},
        {"pass", "string"},
        {"name", "string"},
        {"age", "number"},
        {"pic", "bytes"}--bytes类型能存储哪些:例如图片、文件、字节集数据等等
    }
字段类型支持string、number、布尔型、bytes(在存储时会被Base64编码,取出时会Base64解码,因为屏幕性能问题请不要存储太大的字节集文件)



创建表
成功返回数据表完整路径
local tablePath = edb_create_table(数据库文件夹路径, tableName, 表结构)


打开数据表
成功返回句柄,失败返回Nil
local tableHandle= edb_open(tablePath,1)--参数是系统自增id字段的写入模式,此模式在最下面数据表文件结构中说明。

添加数据
local insertSuccess = edb_add(tableHandle, {"age","user", "name", "pass"}, {18,"1001","张三", "123456"})--注意字段类型

修改数据[还没测试完整]
因为实体屏上项目了,手头没有实体屏,windows总把换行符给我改成\r\n总崩程序,根据当前lua中特性read("*l")只支持\n的换行符,读到\r\n时会出错,这个在实体屏幕里不会出现这个问题。上机可以直接使用。
local aaa = edb_update(tableHandle,{"name","age"},{"李四3",26},{name="张三2"}) -- 成功返回修改数量、失败返回0

查询数据
local jb1 = edb_where(tableHandle,{"user","age"},{"1001",18},{"name","age"})
查询时有4个参数
参数1:打开表返回的句柄
参数2:需要查询的字段table
参数3:对应参数2的字段内容
参数4:需要返回查询出的字段[可省略,省略后返回所有字段内容],为了防止数据行内容过多,所以建议用啥字段就选择啥字段进行筛选查询与返回结果

获取查询结果数量
local wnumber = edb_get_count(jb1)
参数1:查询时返回的句柄jb1

查询数据读取
edb_read(jb1, i,"name")
参数1:查询时返回的句柄jb1
参数2:索引(第一个就填写1)
参数3:读取的字段名称,注意字段类型

关闭句柄
edb_end(tableHandle)--增删改查后记得关闭句柄哦

表文件结构
id:10,user:string,pass:string,name:string,age:number,pic:bytes    --第一行是自增ID当前值存放盒字段名称和类型,下面的是记录行存放
"1","1001","1990321","张三1","1",""
"2","1001","1990321","张三2","2",""
"3","1001","1990321","张三3","3",""
"4","1001","1990321","张三4","4",""
"5","1001","1990321","张三5","5",""


关于自增id字段的原理:在打开表文件的时候参数2需要填写
1=每次添加数据时读取表头存放自增值+1后再写回去
2=每次添加数据时移动指针到文件尾部读取最后一行的自增+1
3=每次打开表时移动指针到文件尾部读取最后一行的自增值到打开表时句柄的结构里,每次添加时在结构里+1
根据自己的屏幕性能或存储器的写入寿命自行选择方式。

还有删除表、清空表等的函数还没进行完整性测试,有兴趣的朋友完善了记得开源分享一下,谢谢



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大彩爱好者Q群14769485
点我下载→TFT【易模块】封装好的函数库
点我下载→TFT屏可中文lua编辑器【好用】
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|广州大彩串口屏论坛_大彩开发者交流论坛

GMT+8, 2025-4-5 04:03 , Processed in 0.050419 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表