zoukankan      html  css  js  c++  java
  • C#校验SQL脚本是否合法,不去执行sql语句

    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
    ————————————————
    版权声明:本文为CSDN博主「wl1121」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/wl1121/java/article/details/84712792

  • 相关阅读:
    Spring总结四:IOC和DI 注解方式
    Spring总结二:IOC(控制反转)xml方式
    Spring总结一:Srping快速入门
    TCP UDP HTTP 的关系和区别
    sql 一些偶尔会用到的写法和函数 不定时更新
    AngularJS分层开发
    AngularJS入门
    url和uri的区别
    MyBatis总结八:缓存介绍(一级缓存,二级缓存)
    Javascript 中 == 与=== 对比
  • 原文地址:https://www.cnblogs.com/turnip/p/13231446.html
Copyright © 2011-2022 走看看