教程集 www.jiaochengji.com
教程集 >  脚本编程  >  Asp.net  >  正文 C#代码验证sql语句是否正确(只验证不执行sql)的方法

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

发布时间:2016-03-09   编辑:jiaochengji.com
为大家介绍如何用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; 
}

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

您可能感兴趣的文章:
C#代码验证sql语句是否正确(只验证不执行sql)的方法
php如何防sql注入?
asp.net如何防范SQL注入式攻击
常用js验证代码大全(Email、手机号码、身份证号码、文件类型等)
asp防止js或sql注入的方法详解
php防止SQL注入的方法分享
十天学会php之第九天
java中Statement和PreparedStatement区别与用法对比
php安全问题思考
mysql5分页查询深入探讨

[关闭]
~ ~