验证SQL语法是否正确

编程入门 行业动态 更新时间:2024-10-06 01:41:31

验证SQL<a href=https://www.elefans.com/category/jswz/34/1770552.html style=语法是否正确"/>

验证SQL语法是否正确

昨天又有一个新的需求:验证文本框输入的SQL语法是否正确。于是就开始百度,其实也挺简单的。首先需要知道“SET PARSEONLY { ON | OFF }”。

    当 SET PARSEONLY 为 ON 时,SQL Server 只分析语句。

    当 SET PARSEONLY 为 OFF 时,SQL Server 编译并执行语句。

    现在我们就可以完成SQL语法检测的功能了。下面是具体的代码

[csharp] view plain copy
  1. public static bool ValidateSQL(string sql)  
  2. {  
  3.     var connStr = "server=localhost;database=jhly;user id=sa;password=1";  
  4.     bool bResult;  
  5.     using (SqlConnection conn = new SqlConnection(connStr))  
  6.     {  
  7.         using (SqlCommand cmd = new SqlCommand())  
  8.         {  
  9.             if (conn.State != ConnectionState.Open)  
  10.                 conn.Open();  
  11.             cmd.Connection = conn;  
  12.             cmd.CommandText = "SET PARSEONLY ON";  
  13.               
  14.             try  
  15.             {  
  16.                 string strParams = "@starttime";  
  17.                 cmd.CommandText = sql;  
  18.                 cmd.Parameters.AddWithValue(strParams, "2010-01-01");  
  19.                 cmd.ExecuteNonQuery();  
  20.                 bResult = true;  
  21.             }  
  22.             catch (Exception ex)  
  23.             {  
  24.                 bResult = false;  
  25.                 LogHelper.Error("SQL语法错误" + ex);  
  26.             }  
  27.             finally  
  28.             {  
  29.                 cmd.CommandText = "SET PARSEONLY OFF";  
  30.                 cmd.ExecuteNonQuery();  
  31.             }  
  32.         }  
  33.     }  
  34.     return bResult;  
  35. }  

和 SET PARSEONLY 相关的还有SET NOEXEC,

    当 SET NOEXEC 为 ON 时,SQL Server 将编译每一条Tran-SQL语句但并不执行它们。

    当 SET NOEXEC 为 OFF 时,SQL Server 编译并执行语句。

他们之间的一些区别:

1.SET PARASEONLY 检查每个Tran-SQL 的语法并返回错误消息,不编译和执行语句。

  SET NOEXEC 编译每个查询但不执行查询。

2.SET PARASEONLY 的设置是在分析时设置,不是在执行或运行时设置。

  SET NOEXEC 的设置在执行或运行时设置,不是在分析时设置。

    关于这块还是刚刚接触,网上有很多的介绍,大家有更深入的认识,欢迎留言,欢迎讨论     

更多推荐

验证SQL语法是否正确

本文发布于:2024-02-11 22:31:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1683947.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语法   是否正确   SQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!