[C#]C#中验证sql语句是否正确(不执行语句)
2016-04-06 11:09
671 查看
检查每个 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();方法:
/// <summary>
/// 只检查SQL语法,不执行SQL语句。
/// </summary>
/// <param name="sql"></param>
/// <param name="conn"></param>
/// <returns></returns>
public static bool ValidateSQL(string sql)
{
bool bResult;
using (SqlConnection conn = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
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;
}
相关文章推荐
- PowerDesigner 的mysql PDM 的COMMENT注释
- windows版mongodb不知道安装在哪儿
- Windows 下 mysql 自动备份
- redis开机启动
- (五)PLSQL Developer 配置监听
- (四)Oracle 11g 安装 -- windows 完全卸载
- (三) Oracle 11g 安装 -- 客户端安装
- (二) Oracle 11g 安装 -- plsqldev 安装
- MySQL创建用户与授权方法
- (一)Oracle 11g 安装--服务端安装
- Oracle在Linux下使用异步IO(aio)配置
- nagios使用check_mysql监控mysql
- mysql数据库分库分表(Sharding)
- Oracle同义词总结
- sql 行转列
- MyBatis:由数据库自动生成实体类
- mysql 打开慢查询日志
- MySQL索引原理与慢查询优化
- 【转】Oracle中 NLS_DATE_FORMAT的设置方法
- Oracle和SQLServer补齐字符串的方法