• C#代码验证sql语句是否正确(只验证不执行sql)的方法


    转自 :http://www.jquerycn.cn/a_15010

    为大家介绍如何用C#验证sql语句的正确性,就像sql查询分析器中的检测代码功能一样,有需要的朋友,可以参考下。

    需要用到如下的知识:
    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; 
    }

    有兴趣的朋友,可以亲自测试下,看看效果如何?!
    可以把以上代码写成类中的方法,以后每次执行时都提前验证下,是不是很酷哦。

    博客标明【原创】的文章都是本人亲自编写内容! 如有需要转载, 请标明出处:辉创1989(http://www.cnblogs.com/ahui1989/),届时非常感谢! 文章分享在此,希望我之原创有帮到你们! 如有不足之处也可联系我,以便我们共同探讨! 本人现职为Epicor10 系统 开发维护工作,如有需要可共同探讨相关技术知识及经验总结! QQ:929412592
  • 相关阅读:
    java获得两个日期之间的所有月份
    Java设计模式之观察者模式
    SpringMVC项目配置
    Java设计模式之策略模式
    Tomcat源码
    线程池
    java内存模型
    JVM内存结构 JVM的类加载机制
    java虚拟机-垃圾回收算法
    并发容器-ConcurrentHashMap,CopyOnWriteArrayList
  • 原文地址:https://www.cnblogs.com/ahui1989/p/8031130.html
Copyright © 2020-2023  润新知