为了账号安全,请及时绑定邮箱和手机立即绑定

如下情况所示,using(){}是什么意思?

如下情况所示,using(){}是什么意思?

幕布斯6054654 2022-04-07 11:07:22
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;
}

查看完整回答
反对 回复 2022-04-11
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

在using下面的代码域中,可以使用using后面声明的对象,并且在退出using代码域时,自动执行对象的Dispose方法,具体到这里,就是自动执行sqlcmd.SqlConnection.Close()

查看完整回答
反对 回复 2022-04-11
?
SMILET

TA贡献1796条经验 获得超4个赞

执行SQLCOMMAND的ExecuteNonQuery方法时会产生一个空的DataReader,退出using的代码域时也将自动销毁这个DataReader。所以要使用ExecuteNonQuery方法时,最好在using中使用,否则自己要时刻记得用完DataReader后手动close

查看完整回答
反对 回复 2022-04-11
  • 3 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信