C# 如何使用dapper解析Sql脚本?(仅在+;整洁上设置)

C# 如何使用dapper解析Sql脚本?(仅在+;整洁上设置),c#,sql,sql-server,parsing,dapper,C#,Sql,Sql Server,Parsing,Dapper,我想检查并解析sql脚本,所以我搜索了它,发现了类似这样的内容 SET PARSEONLY ON SELECT * FROM [dbo].[Categories] --Query To Parse public bool IsValidSqlScript(string sqlScript) { using (SQLConnection) { using (SQLTransaction) {

我想检查并解析sql脚本,所以我搜索了它,发现了类似这样的内容

SET PARSEONLY ON 
SELECT * FROM [dbo].[Categories]  --Query To Parse
 public bool IsValidSqlScript(string sqlScript)
    {
        using (SQLConnection)
        {
            using (SQLTransaction)
            {
                var status = SQLConnection.Execute("SET PARSEONLY ON " + sqlScript);
                // OR
                // var status = SQLConnection.Query("SET PARSEONLY ON " + sqlScript);
            }
        }
        return status;
    }
我用的是简洁的,所以我写的方法是这样的

SET PARSEONLY ON 
SELECT * FROM [dbo].[Categories]  --Query To Parse
 public bool IsValidSqlScript(string sqlScript)
    {
        using (SQLConnection)
        {
            using (SQLTransaction)
            {
                var status = SQLConnection.Execute("SET PARSEONLY ON " + sqlScript);
                // OR
                // var status = SQLConnection.Query("SET PARSEONLY ON " + sqlScript);
            }
        }
        return status;
    }
如何获取状态,如果存在任何错误,如何获取错误列表

SET PARSEONLY ON
SELECT * FR OM [dbo].[Categories]  --Query To Parse

>>> false
>>> Msg 102, Level 15, State 1, Line 2 Incorrect syntax near 'FR'.

很接近,但您的状态变量有问题。您可以使用语句在SQLTransaction中声明它,然后尝试在该范围之外返回它

您需要使用try/catch块来执行查询,这样您就可以知道
sqlScript
何时有效。如果输入catch块,则该块无效,如果不输入,则该块有效

代码应该类似于以下内容

public bool IsValidSqlScript(string sqlScript)
{
    bool status;

    try
    {
        using (SQLConnection)
        {
            using (SQLTransaction)
            {
                SQLConnection.Execute("SET PARSEONLY ON " + sqlScript);                    
            }
        }
        status = true;
    }
    catch(Exception e)
    {
        status = false;
    )

    return status;
}