在c++板块发过,没人回答,有人建议这发了,于是,我来了做一个自己使用的文件数据库,为了支持简单sql语句,需要编写一个sql解析器。现在碰到一个问题,
在解析带有绑定变量的sql语句的时候如何将变量真正的值解析出来,
例如,insert into student values('make','+age+'); 这边插入的第二个值是一个变量,问题是sql语句是以一个字符串的形式传递到解析函数里面的,在解析函数里面我该如何获取到这个变量的值?
附带一个问题,有谁写过sql的解析器的吗,能不能分享一下你是怎么编写的吗?我的方法是直接对sql进行解析,将需要的东西解析出来
比如create table student {
name char[8]
age int
}
解析这个语句的时候,我就是将表名student  列信息 name  char[8] age int 代表的信息提取出来,存到对应的数据结构中,当然解析的时候也会对sql语句的合法性进行一定的检查,反正我能想到的错误类型都检查了,应该还有差错。

解决方案 »

  1.   

    第一个问题:用动态SQL 就可以了,直接'+age+'这样是不行的。
    第二个,不晓得了,没写过那个,平时自己都是目测的,O(∩_∩)O哈哈~
      

  2.   

    你自己写解析,那肯定是很麻烦的,要检查很多的,你还是把语句直接发送到sql server 执行,然后如果报错,那就把返回的错误的信息显示出
      

  3.   

    我是自己编写一个小数据库哈,因此发送到sql sever检查的话,我这个程序就失去意义了。