猿问

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

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;
}

幕布斯6054654
浏览 166回答 3
3回答

慕容森

有些地方你需要注意:using(){..}的功能其实就是try {} finally{}所以你那个里面没有必要再使用try..finally相当于try{//using大括号里面的所有东西} finally{//执行完毕就执行Dispose;}另外一个要注意的就是using(..)括号里面的类必须实现了System.IDisposable接口.最后catch()括号中的异常类型,如果不使用则可以不实例化比如try{...}//这里不用实例化一个 ex。catch(Exception){iResult = 0;}

慕尼黑5688855

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

SMILET

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

相关分类

SQL Server
我要回答