c# - 解析SQL查询并提取列名和表名

标签 c# sql parsing antlr

我有一个这样的查询脚本:

SELECT View1.OrderDate,View1.Email,SUM(View1.TotalPayments) FROM dbo.View1
WHERE (View1.OrderStatus = 'Completed') 
GROUP BY View1.OrderDate,View1.Email
HAVING
(SUM(View1.TotalPayments) > 75);

有什么方法可以从SQL查询中提取一些关键信息吗?比如表名和列名,我有2个问题:

  1. 我确实进行了搜索,我找到了一些解析器,例如 ANTLR ,但我找不到 查找解释此解析器在 C# 语言中的使用的文档。
  2. 有什么方法可以使用 Entity Frame Work 来解析 sql 查询吗?我的查询是完全动态的,它们是在运行时创建的

最佳答案

我认为最好的答案是使用 Irony 解析器: http://irony.codeplex.com/

Hanselman 有一个关于如何使用它来解析 SQL 的很好的链接: http://www.hanselman.com/blog/TheWeeklySourceCode59AnOpenSourceTreasureIronyNETLanguageImplementationKit.aspx

希望对您有所帮助,祝您好运!

关于c# - 解析SQL查询并提取列名和表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12483173/

相关文章:

c# - appname.vchost.exe 文件是什么

c# - 为什么 'i'的初始值总是49

mysql - MariaDB 密码重置不起作用

c# - .NET 中的 SqlConnection——我怎样才能最好地利用连接池?

ios - 用于实时查询/推送通知的数据库

c# - 如何根据 cookie 值将用户对象从启动类注入(inject)到 Controller 构造函数

mysql - SQL JOIN 带条件

ios - 仅将 XML 中的 20 个最近项目添加到 NSMutableArray

c - 柠檬力与否?

c# - 尝试在带有 OWIN 的 ASP.NET MVC 站点中使用简单注入(inject)器