public int ExecuteSql(string sql){open();if (conn == null) return 0;int iResult = 0;using (SqlCommand sqlcmd = new SqlCommand(sql, conn)){try{sqlcmd.CommandTimeout = 300;sqlcmd.ExecuteNonQuery();iResult = 1;}catch (Exception ex){iResult = 0;}finally{if (conn.State == ConnectionState.Open){conn.Close();}}}return iResult;}
3 回答
慕容森
TA贡献1853条经验 获得超18个赞
有些地方你需要注意:
using(){..}
的功能其实就是try {} finally{}
所以你那个里面没有必要再使用try..finally
相当于try{//using大括号里面的所有东西} finally{//执行完毕就执行Dispose;}
另外一个要注意的就是using(..)括号里面的类必须实现了System.IDisposable接口.
最后catch()括号中的异常类型,如果不使用则可以不实例化
比如try{
...
}
//这里不用实例化一个 ex。
catch(Exception){
iResult = 0;
}
慕尼黑5688855
TA贡献1848条经验 获得超2个赞
在using下面的代码域中,可以使用using后面声明的对象,并且在退出using代码域时,自动执行对象的Dispose方法,具体到这里,就是自动执行sqlcmd.SqlConnection.Close()
SMILET
TA贡献1796条经验 获得超4个赞
执行SQLCOMMAND的ExecuteNonQuery方法时会产生一个空的DataReader,退出using的代码域时也将自动销毁这个DataReader。所以要使用ExecuteNonQuery方法时,最好在using中使用,否则自己要时刻记得用完DataReader后手动close
- 3 回答
- 0 关注
- 165 浏览
添加回答
举报
0/150
提交
取消