明白了,除了根据表定义生成数据结构,带正反序列化到某种指定结构化的文档或数据格式,
你的另一个研究点在于从数据库里拖出一块内存,像解析流一样,或先分行,再把每行分成字段(根据每个成员变量的描述,即字节长度),这样一大块内存(查询结果)就变成了多个C的结构体。
只考虑字节长度是不够的,还要考虑对齐问题。这用C语言来做描述挺合适。我的应用数据库不是重点,没考虑这个。不过好奇,每种数据库查询结果,内存块里各行的各字段,对齐是一样的吗?应该也需要实战调试到稳定吧。
sqlite里,查询结果,访问某行的每一列时,有类似getColumn(i)的操作,我没考虑自己解析二进制流算偏移的问题,不擅长,也不喜欢。看你的描述,这是你“绑定1000行”、提高插入查询速度的关键。
第一范式有意思。规范的表设计不应该嵌套。我这里原始的程序存储不是用数据库,是xml,所以我生成的结构体还要支持嵌套。方案就是让生成的结构体统一继承自某个模板类CRTP<P> + enable_if<std::is_base_of>
听了你的描述,感觉到语言确实会影响人的思维和方案的选定。我弄的那套东西,因为一些原因,还用C#改写了一遍,语言原生支持反射,就太简单了。
【 在 ylh0315 的大作中提到: 】
: C的实现是有什么高级的地方吗?
: 不是成员变量指针,相反,成员是指针类型的,除了char,其他的还处理不了。这个设计是基于关系数据库的第一范式,每个成员都是简单类型。
: 每张表生成一个结构体和模板。不带任何函数。
: ...................
--
修改:DoorWay FROM 61.185.187.*
FROM 61.185.187.*