在c#中解析SQL字符串

Wil*_*lem 4 .net c# t-sql parsing sqlcommand

我需要解析一个Command.CommandText.

我不想运行查询.我只想查看命令执行时查询是否成功.

说我有; "SELECT * FROM SomeTable WHERE (1=1)"

此字符串将成功.

但,

"SELECT * FROM SomeTable WHERE (1=1"
Run Code Online (Sandbox Code Playgroud)

不会成功.

现在我的问题.我怎么会Parse这个字符串c#

Mar*_*ith 7

如果您只想验证语法.您可以使用Microsoft.Data.Schema.ScriptDom.

using Microsoft.Data.Schema.ScriptDom;
using Microsoft.Data.Schema.ScriptDom.Sql;

.....

        string sql = "SELECT * FROM SomeTable WHERE (1=1";
        var p = new TSql100Parser(true);
        IList<ParseError> errors;

        p.Parse(new StringReader(sql), out errors);


        if (errors.Count == 0)
            Console.Write("No Errors");
        else
            foreach (ParseError parseError in errors)
                Console.Write(parseError.Message);
Run Code Online (Sandbox Code Playgroud)