在C#中编写部分SQL

我需要解析部分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的entity framework的示例:
在C#中解析SQL代码

似乎其他人自己推出并将其放在Code Project上:
http://www.codeproject.com/KB/dotnet/SQL_parser.aspx

就个人而言,我会使用entity framework解决方案,因为它是由MS创建和维护的,但它也可能与SQL Server紧密结合。 由于您正在查看MySQL,您可能希望使用Code Project上的自定义解决方案,因为我确信您可以根据语法要求在更多自定义解决方案中进行编码。

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

更新
我刚回到这里并阅读了评论……经过进一步的反思,我真的推荐ANTLR,因为它支持多种语法。 再一次,我没有使用它,所以听听它是如何成功的,这将是很好的,这取决于你的决定。
https://stackoverflow.com/questions/76083/parsing-sql-in-net/76151

还有一些方法可以通过Visual Studio的数据库版本使用完全解析(由Microsoft)T-SQL –

Database Edition产品的皇冠gem是SQL解析器和脚本生成器,这两个部分构成了数据库项目系统内部工作的基础。

http://blogs.msdn.com/b/gertd/archive/2008/08/21/getting-to-the-crown-jewels.aspx