sql解析器解析带变量的sql语句

时间:2021-04-25 19:34:56
在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语句的合法性进行一定的检查,反正我能想到的错误类型都检查了,应该还有差错。

5 个解决方案

#1


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

#2


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

#3


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

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

#4


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

sql解析器解析带变量的sql语句哥们,你没看清楚我的问题吧

#5


引用 4 楼 lcmzgy 的回复:
Quote: 引用 1 楼 hwhmh2010 的回复:

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

sql解析器解析带变量的sql语句哥们,你没看清楚我的问题吧

sql解析器解析带变量的sql语句

#1


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

#2


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

#3


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

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

#4


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

sql解析器解析带变量的sql语句哥们,你没看清楚我的问题吧

#5


引用 4 楼 lcmzgy 的回复:
Quote: 引用 1 楼 hwhmh2010 的回复:

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

sql解析器解析带变量的sql语句哥们,你没看清楚我的问题吧

sql解析器解析带变量的sql语句