当前位置: 移动技术网 > IT编程>开发语言>c# > C#中验证sql语句是否正确(不执行语句)

C#中验证sql语句是否正确(不执行语句)

2019年07月18日  | 移动技术网IT编程  | 我要评论
set parseonly检查每个 transact-sql 语句的语法并返回任何错误消息,但不编译和执行语句。set parseonly { on | off }当 se

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的代码:

复制代码 代码如下:

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; 
    }

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网