首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用TSqlParser

使用TSqlParser
EN

Stack Overflow用户
提问于 2009-11-23 03:44:12
回答 3查看 16.4K关注 0票数 21

我正在尝试使用微软提供的TSql100Parser解析SQL。现在,我在使用它时遇到了一些问题,它似乎是想要使用的方式。此外,缺乏文档也无济于事。(示例:http://msdn.microsoft.com/en-us/library/microsoft.data.schema.scriptdom.sql.tsql100parser.aspx )

当我通过解析器运行一条简单的SELECT语句时,它返回一个包含SELECT语句的TSqlStatements集合。问题是,TSqlSelect语句不包含WHERE子句等属性,即使该子句是作为类实现的。http://msdn.microsoft.com/en-us/library/microsoft.data.schema.scriptdom.sql.whereclause.aspx解析器通过查看令牌流来识别WHERE子句。所以,我的问题是,我是否正确地使用了解析器?现在,令牌流似乎是解析器最有用的功能……

我的测试项目:

public static void Main(string[] args)
{
    var parser = new TSql100Parser(false);

            IList<ParseError> Errors;
            IScriptFragment result = parser.Parse(
                new StringReader("Select col from T1 where 1 = 1 group by 1;" +
                    "select col2 from T2;" +
                    "select col1 from tbl1 where id in (select id from tbl);"),
                    out Errors);

            var Script = result as TSqlScript;

            foreach (var ts in Script.Batches)
            {
                Console.WriteLine("new batch");

                foreach (var st in ts.Statements)
                {
                    IterateStatement(st);
                }
            }
}

static void IterateStatement(TSqlStatement statement)
{
            Console.WriteLine("New Statement");

            if (statement is SelectStatement)
            {
                PrintStatement(sstmnt);
            }
}
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1779737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档