回答

收藏

C#中的Lexing部分SQL

技术问答 技术问答 288 人阅读 | 0 人回复 | 2023-09-14

我需要分析部分SQL查询(用于SQL注入审核工具)。例如, d4 G- m* t+ O7 N4 l; |
'1' AND 1=1--应分解成令牌* U2 W: ?. i  O; f- j/ Y( u
[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 Q, D% M: h* P6 M& `/ K# s大部分语法,即使不是全部)
/ `& R# T$ W" M% Q% K2 |                                                                , F4 i7 b, s9 O
    解决方案:                                                                $ n4 M: \0 D' S9 Y  V
                                                                那里似乎有一些很好的分析器。+ W4 R" O/ r. |  w$ }
这篇SO使用文章MS实体框架示例:使用
* q& S" F1 n. M1 a8 M. tC#解析SQL代码
( B2 J( \" q! u/ f其他人似乎把自己的代码放在代码项目上:http//www.codeproject.com/KB/dotnet/SQL_parser.aspx就个人而言,我将使用实体框架解决方案,因为它是由来的MS也有可能创建和维护它SQL
0 ?$ \: D3 {( E7 TServer紧密结合。由于您正在研究MySQL,所以你可能想在这里Code* g) M2 i. h% h3 r0 w0 g" T
Project使用自定义解决方案,因为我相信您可以根据语法要求编码更多的自定义解决方案。- p1 ~6 H( m3 a! C' G# Z. j
我会很快使用它(对于它)Oracle,而不是MySQL),因此,请让社区知道解决方案的工作方法!
8 Q& J9 d3 O: G# d  \更新    :5 ]' \$ T% n! \1 {% V& h7 v3 D
我刚回到这里阅读评论…经过进一步的思考,我真的建议ANTLR,因为它支持多种语法。再一次,我没有用过它,所以我很高兴听到它是如何工作的,这取决于你自己的决定。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则