揰掵佲 发表于 2021-8-19 12:35:33

EDB_操作模块源码

据说,1亿数据1秒查询!
.版本 2

.程序集 模块入口
.程序集变量 集_数据库, 字节集
.程序集变量 集_是否打开, 逻辑型
.程序集变量 集_字段信息, EDB字段信息, , "0"
.程序集变量 集_数据偏移, 长整数型
.程序集变量 集_长度数组, 整数型, , "8"
.程序集变量 集_当前记录, 整数型
.程序集变量 集_数据库缓存, 字节集
.程序集变量 集_字段总长, 整数型
.程序集变量 集_数据库路径, 文本型

.子程序 EDB_打开, 逻辑型, 公开
.参数 数据库路径, 文本型, , 数据库路径
.局部变量 局_长度, 整数型
.局部变量 局_标志, 文本型
.局部变量 局_字段名偏移, 整数型
.局部变量 局_字段总长, 整数型
.局部变量 局_字段数, 整数型
.局部变量 局_计次, 整数型
.局部变量 局_字段信息, EDB字段信息

清除数组 (集_字段信息)
集_数据库 = 读入文件 (数据库路径)
集_数据库路径 = 数据库路径
局_长度 = 取字节集长度 (集_数据库)
.如果真 (局_长度 < 112)
    集_数据库 = {}
    返回 (假)
.如果真结束
局_标志 = 到文本 (取字节集左边 (集_数据库, 4))
.如果真 (局_标志 ≠ “WEDB”)
    集_数据库 = {}
    返回 (假)
.如果真结束
'
局_字段数 = 集_数据库
.计次循环首 (局_字段数, 局_计次)
    局_字段名偏移 = (局_计次 - 1) × 72 + 117
    局_字段信息.字段名 = 到文本 (取字节集中间 (集_数据库, 局_字段名偏移, 20))
    局_字段信息.字段类型 = 集_数据库 [局_字段名偏移 + 20]
    .如果 (局_字段信息.字段类型 ≥ #字节型 且 局_字段信息.字段类型 < #子程序指针型)
      局_字段信息.字段长度 = 集_长度数组 [局_字段信息.字段类型]
    .否则
      .判断开始 (局_字段信息.字段类型 = #文本型)
            局_字段信息.字段长度 = 集_数据库 [局_字段名偏移 + 28] + 集_数据库 [局_字段名偏移 + 29] × 256
      .默认
            集_数据库 = {}
            返回 (假)
      .判断结束

    .如果结束

    加入成员 (集_字段信息, 局_字段信息)
.计次循环尾 ()
集_数据偏移 = 局_字段数 × 72 + 117
局_计次 = 0
局_字段总长 = 0
.计次循环首 (取数组成员数 (集_字段信息), 局_计次)
    局_字段总长 = 局_字段总长 + 集_字段信息 [局_计次].字段长度
.计次循环尾 ()
集_字段总长 = 局_字段总长
集_数据库缓存 = 取空白字节集 (集_字段总长)
集_当前记录 = 0
集_是否打开 = 真
返回 (真)

.子程序 EDB_取记录数, 整数型, 公开
.局部变量 局_记录数, 整数型

.如果真 (集_是否打开 = 真)
    局_记录数 = 集_数据库 + 集_数据库 × 256 + 集_数据库 × 65536 + 集_数据库 × 16777216
    返回 (局_记录数)
.如果真结束
返回 (0)

.子程序 EDB_读_文本, 文本型, 公开
.参数 字段位置, 整数型, , 字段位置
.局部变量 局_记录偏移, 整数型
.局部变量 局_长度, 整数型
.局部变量 局_返回, 字节集
.局部变量 局_计次, 整数型

.如果真 (集_是否打开 = 真)
    局_记录偏移 = (集_当前记录 - 1) × (集_字段总长 + 4) + 集_数据偏移'
    局_长度 = 4
    .计次循环首 (字段位置 - 1, 局_计次)
      局_长度 = 局_长度 + 集_字段信息 [局_计次].字段长度
    .计次循环尾 ()
    局_返回 = 取字节集中间 (集_数据库, 局_记录偏移 + 局_长度, 集_字段信息 [字段位置].字段长度)
    返回 (到文本 (局_返回))
.如果真结束
返回 (“”)

.子程序 EDB_线程读_文本, 文本型, 公开
.参数 记录位置, 整数型
.参数 字段位置, 整数型, , 字段位置
.局部变量 局_记录偏移, 整数型
.局部变量 局_长度, 整数型
.局部变量 局_返回, 字节集
.局部变量 局_计次, 整数型

.如果真 (集_是否打开 = 真)
    局_记录偏移 = (记录位置 - 1) × (集_字段总长 + 4) + 集_数据偏移'
    局_长度 = 4
    .计次循环首 (字段位置 - 1, 局_计次)
      局_长度 = 局_长度 + 集_字段信息 [局_计次].字段长度
    .计次循环尾 ()
    局_返回 = 取字节集中间 (集_数据库, 局_记录偏移 + 局_长度, 集_字段信息 [字段位置].字段长度)
    返回 (到文本 (局_返回))
.如果真结束
返回 (“”)

.子程序 EDB_写_文本, , 公开
.参数 字段位置, 整数型, , 字段位置
.参数 文本内容, 文本型, , 文本内容
.局部变量 局_记录偏移, 整数型
.局部变量 局_长度, 整数型
.局部变量 局_返回, 字节集
.局部变量 局_计次, 整数型

.如果真 (集_是否打开 = 真)
    局_记录偏移 = (集_当前记录 - 1) × (集_字段总长 + 4) + 集_数据偏移'
    局_长度 = 4
    .计次循环首 (字段位置 - 1, 局_计次)
      局_长度 = 局_长度 + 集_字段信息 [局_计次].字段长度
    .计次循环尾 ()
    局_返回 = 到字节集 (文本内容)
    .如果真 (取字节集长度 (局_返回) ≤ 集_字段信息 [字段位置].字段长度)
      .计次循环首 (取字节集长度 (局_返回), 局_计次)
            集_数据库 [局_记录偏移 + 局_长度 + 局_计次 - 1] = 局_返回 [局_计次]
      .计次循环尾 ()
    .如果真结束

.如果真结束


.子程序 EDB_跳过, , 公开

.如果真 (集_是否打开 = 真)
    集_当前记录 = 集_当前记录 + 1
.如果真结束


.子程序 EDB_到首记录, , 公开

.如果真 (集_是否打开 = 真)
    集_当前记录 = 1
.如果真结束


.子程序 EDB_加空记录, , 公开
.参数 记录数量, 整数型
.局部变量 局_记录数, 整数型
.局部变量 局_记录数字节集, 字节集
.局部变量 局_计次, 整数型
.局部变量 局_数据偏移, 整数型
.局部变量 局_尾记录偏移, 整数型
.局部变量 局_计次2, 整数型

.如果真 (集_是否打开 = 真)
    .如果真 (记录数量 > 0)
      局_记录数 = 集_数据库 + 集_数据库 × 256 + 集_数据库 × 65536 + 集_数据库 × 16777216
      集_当前记录 = 局_记录数 + 1'
      局_记录数 = 局_记录数 + 记录数量'
      局_记录数字节集 = 到字节集 (局_记录数)
      .计次循环首 (4, 局_计次)
            集_数据库 = 局_记录数字节集 [局_计次]
      .计次循环尾 ()
      集_数据库 = 集_数据库 + 取空白字节集 ((集_字段总长 + 4) × 记录数量)'
      局_尾记录偏移 = 集_数据库 + 集_数据库 × 256 + 集_数据库 × 65536 + 集_数据库 × 16777216
      局_记录数 = 局_尾记录偏移 + 记录数量'
      局_记录数字节集 = 到字节集 (局_记录数)
      .计次循环首 (4, 局_计次)
            集_数据库 = 局_记录数字节集 [局_计次]
      .计次循环尾 ()
      .计次循环首 (记录数量, 局_计次)
            局_数据偏移 = (集_当前记录 - 1) × (集_字段总长 + 4) + 集_数据偏移'
            局_记录数字节集 = 到字节集 (局_尾记录偏移)
            .计次循环首 (4, 局_计次2)
                集_数据库 [局_数据偏移 + 局_计次2 - 1] = 局_记录数字节集 [局_计次2]
            .计次循环尾 ()
            局_尾记录偏移 = 局_尾记录偏移 + 1
            集_当前记录 = 集_当前记录 + 1
      .计次循环尾 ()
    .如果真结束

.如果真结束


.子程序 EDB_更新记录, , 公开

.如果真 (集_是否打开 = 真)
    写到文件 (集_数据库路径, 集_数据库)
.如果真结束


.子程序 EDB_关闭, , 公开

.如果真 (集_是否打开 = 真)
    写到文件 (集_数据库路径, 集_数据库)
    集_数据库 = {}
    集_是否打开 = 假
.如果真结束

.版本 2

.数据类型 EDB字段信息
    .成员 字段名, 文本型
    .成员 字段类型, 整数型
    .成员 字段长度, 整数型




**** Hidden Message *****

liulisheng 发表于 2021-9-3 09:40:43

做得太好了   

htvusyzt 发表于 2021-10-14 08:45:16

感谢您的奉献,看不懂啊

wwwcsf12 发表于 2023-3-19 23:24:12

zhichikaiyuan

dmnbjusx 发表于 2023-6-7 23:25:56

看看是不是真的!~~~
页: [1]
查看完整版本: EDB_操作模块源码