当前位置: 首页 > 面试题库 >

C#中的Lexing部分SQL

谷梁英资
2023-03-14
问题内容

我需要解析部分SQL查询(用于SQL注入审核工具)。例如

'1' AND 1=1--

应该分解成令牌

[0] => [SQL_STRING, '1']
[1] => [SQL_AND]
[2] => [SQL_INT, 1]
[3] => [SQL_AND]
[4] => [SQL_INT, 1]
[5] => [SQL_COMMENT]
[6] => [SQL_QUERY_END]

他们至少是我所基于的SQL词法分析器,还是诸如C#的bison之类的良好工具(尽管我宁愿不编写自己的语法,因为我需要支持MySQL
5的大部分语法,即使不是全部)


问题答案:

似乎那里有一些很好的解析器。

这篇SO文章有一个使用MS的实体框架的示例:使用
C#解析SQL代码

似乎其他人将自己的代码放到了代码项目上: http
//www.codeproject.com/KB/dotnet/SQL_parser.aspx

就个人而言,我将使用实体框架解决方案,因为它是由MS创建和维护的,因此也可能与SQL
Server紧密结合。由于您正在研究MySQL,因此您可能希望在Code
Project上使用自定义解决方案,因为我确信您可以按照语法要求在更多的自定义解决方案中进行编码。

我将很快使用它(对于Oracle,而不是MySQL),所以请让社区知道该解决方案的工作方式!

更新
我刚刚回到这里并阅读了评论…经过进一步的思考,我真的建议ANTLR,因为它支持多种语法。再一次,我没有使用过它,所以很高兴听到它是如何工作的,这取决于您自己决定。



 类似资料:
  • 本文向大家介绍C#中分部方法和分部类分析,包括了C#中分部方法和分部类分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了C#中分部方法和分部类。分享给大家供大家参考。 具体代码如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍解析C#中的分部类和分部方法,包括了解析C#中的分部类和分部方法的使用技巧和注意事项,需要的朋友参考一下 可以将类或结构、接口或方法的定义拆分到两个或多个源文件中。每个源文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组合起来。 分部类 在以下几种情况下需要拆分类定义: 处理大型项目时,使一个类分布于多个独立文件中可以让多位程序员同时对该类进行处理。 使用自动生成的源时,无

  • 最近我一直在探索使用函数及其变体的各种应用,我特别感兴趣的是使用将所有参数传递到。下面的数据集属于我们今天早些时候与多位非常有知识的用户讨论的另一个问题。我们应该根据列中的值沿着它们各自的行重复列中的值,以获得以下输出: 输出: 非常感谢您的提前和非常抱歉的冗长的描述。

  • 本文向大家介绍C# Partial:分部方法和分部类代码实例,包括了C# Partial:分部方法和分部类代码实例的使用技巧和注意事项,需要的朋友参考一下 这段代码只会输出:Hello,并且不会造成编译错误。

  • 目录 14. 计算机中数的表示 1. 为什么计算机用二进制计数 2. 不同进制之间的换算 3. 整数的加减运算 3.1. Sign and Magnitude表示法 3.2. 1's Complement表示法 3.3. 2's Complement表示法 3.4. 有符号数和无符号数 4. 浮点数 15. 数据类型详解 1. 整型 2. 浮点型 3. 类型转换 3.1. Integer Prom

  • 目录 1. 程序的基本概念 1. 程序和编程语言 2. 自然语言和形式语言 3. 程序的调试 4. 第一个程序 2. 常量、变量和表达式 1. 继续Hello World 2. 常量 3. 变量 4. 赋值 5. 表达式 6. 字符类型与字符编码 3. 简单函数 1. 数学函数 2. 自定义函数 3. 形参和实参 4. 全局变量、局部变量和作用域 4. 分支语句 1. if语句 2. if/els