C#校验sql是否合法,不去执行sql语句

14 篇文章 0 订阅
本文介绍了如何在 C# 中使用 SQL Server 的 SET PARSEONLY 和 SET NOEXEC 选项来校验 SQL 语句的语法,而不实际执行它们。SET PARSEONLY 只分析语句语法,而 SET NOEXEC 则会编译但不执行查询。这两种方法在确保 SQL 代码正确性方面提供了有效的工具,特别适合于调试和验证批处理中的 Transact-SQL 代码。
摘要由CSDN通过智能技术生成
public bool ValidateSQL(string sql)  
    {  
        bool bResult;  

        SqlCommand cmd = _conn.CreateCommand();  
        cmd.CommandText = "SET PARSEONLY ON";  
        cmd.ExecuteNonQuery();  
        try  
        {  
            cmd.CommandText = sql;  
            cmd.ExecuteNonQuery();  
            bResult = true;  
        }  
        catch (Exception ex)  
        {  
            bResult = false;  
        }  
        finally  
        {  
            cmd.CommandText = "SET PARSEONLY OFF";  
            cmd.ExecuteNonQuery();  
        }  

        return bResult;  
    }

SET PARSEONLY
检查每个 Transact-SQL 语句的语法并返回任何错误消息,但不编译和执行语句。
SET PARSEONLY { ON | OFF }
当 SET PARSEONLY 为 ON 时,SQL Server 只分析语句。当 SET PARSEONLY 为 OFF 时,SQL Server 编译并执行语句。
SET PARSEONLY 的设置是在分析时设置,而不是在执行或运行时设置。
在存储过程或触发器中不要使用 PARSEONLY。如果 OFFSETS 选项为 ON 而且没有出现错误,则 SET PARSEONLY 返回偏移量。

SET NOEXEC (Transact-SQL)
编译每个查询但不执行查询。
SET NOEXEC { ON | OFF }
当 SET NOEXEC 为 ON 时,SQL Server 将编译每一批处理 Transact-SQL 语句但并不执行它们。当 SET NOEXEC 设置为 OFF 时,所有批处理将在编译后执行。
SQL Server 中的语句执行包含两个阶段:编译和执行。该设置可用于让 SQL Server 在执行 Transact-SQL 代码时,验证代码中的语法和对象名。它也可以用于调试通常是较大的批处理中的部分语句。


SET NOEXEC 设置是在执行或运行时设置,而不是在分析时设置。

 SET PARSEONLY ON

SET PARSEONLY OFF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值