gpt4 book ai didi

c# - 在 C# 中对部分 SQL 进行 Lexing

转载 作者:IT王子 更新时间:2023-10-29 00:28:37 24 4
gpt4 key购买 nike

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

'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# 的野牛(尽管我宁愿不编写自己的语法,因为我需要支持 MySQL 5 的大部分语法,如果不是全部的话)

最佳答案

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

这篇 SO 文章有一个使用 MS Entity Framework 的示例:
Parsing SQL code in C#

似乎其他人自己推出了代码项目并将其放在代码项目中:
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

关于c# - 在 C# 中对部分 SQL 进行 Lexing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2939694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com