zoukankan      html  css  js  c++  java
  • C#中验证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的代码:

     1 public bool ValidateSQL(string sql)  
     2     {  
     3         bool bResult;  
     4         SqlCommand cmd = _conn.CreateCommand();  
     5         cmd.CommandText = "SET PARSEONLY ON";  
     6         cmd.ExecuteNonQuery();  
     7         try  
     8         {  
     9             cmd.CommandText = sql;  
    10             cmd.ExecuteNonQuery();  
    11             bResult = true;  
    12         }  
    13         catch (Exception ex)  
    14         {  
    15             bResult = false;  
    16         }  
    17         finally  
    18         {  
    19             cmd.CommandText = "SET PARSEONLY OFF";  
    20             cmd.ExecuteNonQuery();  
    21         }  
    22         return bResult;  
    23     }
    View Code

    详细出处参考:http://www.jb51.net/article/35115.htm

  • 相关阅读:
    CF1172F
    CF506E
    【清华集训2014】玛里苟斯
    CF516E Drazil and His Happy Friends
    [NOI2017]游戏(2-SAT)
    [bzoj2878][Noi2012]迷失游乐园(基环树dp)
    bzoj3545/bzoj3551 [ONTAK2010]Peaks/Peaks加强版
    [bzoj1791][ioi2008]Island 岛屿(基环树、树的直径)
    [AT2306]Rearranging(拓扑序)
    [bzoj5301][Cqoi2018]异或序列
  • 原文地址:https://www.cnblogs.com/qiernonstop/p/3352452.html
Copyright © 2011-2022 走看看