这个我知道,这是另一个哥们写的,我拿来示例,审查不严,看样子老码农也会走眼。
删掉break,错误行略过,后边的工作继续。
vector改得好,这本来是c程序套了个++壳而已,那个缓冲区长度问题,也可以考虑String_buff来解决。但是这涉及底层代码修改,在组装SQL时(还有不定长的结果集),使用String_buff,就成了C++模块。不知道一些纯C的环境还能不能用。我的是工具库呀,这我一直在犹豫。
还有,在生成SQL语句时,有大量的编辑替换工作,我还不大会玩String_buff的编辑,这倒是不难,让AI干就行。
比如,写了一个begdate >= :begdate,需要替换成begdate <= to_date(:begdate,'YYYY-MM-DD')
看看158楼的生成的SQL语句,就有这玩意儿。
还有一些细节,如有个开发小组长,怕数据库的列名泄露秘密,都采用N0015,J012这样的名字,码农受不了了,程序没法看了。于是我就有了一个功能,列名翻译。
于是就可以写: $begdate <= :begdate 如果列名翻译表里有,就替换成 N0015 <= to_date(:begdate,'YYYY-MM-DD')。否则就去掉 $。
列名翻译还有一个用途,数据库的列名有人爱用汉字,映射到struct的成员名,大部分编译器不允许汉字,就得翻译成字母名。在语句生成方面,编辑的活挺多的。整个架构层层堆叠,底层的都具有多方面的用途,不只是做ORM这么简单。
说了这么多,让AI干还不如自己干的快。
【 在 yuanmo 的大作中提到: 】
: 删除break会导致新的bug,就是i的计数不对。具体怎么改。。。问AI吧,Deepseek就行。
:
--
修改:ylh1969 FROM 221.221.54.*
FROM 221.221.54.*