• C#中验证sql语句的方法 (SET PARSEONLY 与SET NOEXEC )


    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;  
        }  
  • 相关阅读:
    logging模块
    获得本机时间
    为了节约一台打印机,我也是无奈呀~~~~
    django通过管理页上传图片
    python打印爱心
    djago后台管理页面
    今天休年休找不到填年休的表了,结果就写了一个查找文件的缩引存起来方便下次用
    中间件调用顺序_______网站仿问过程
    django中间件
    py3.8安装
  • 原文地址:https://www.cnblogs.com/babietongtianta/p/2986523.html
Copyright © 2020-2023  润新知