我有以下代码,如果我在finally中使用conn == null,我仍然使用连接池吗?
我知道关闭连接是一个好习惯,但是整个连接对象的处理呢?
public void ExecuteNonQuery(SqlCommand Cmd)
{
//========== Connection ==========//
SqlConnection Conn = new SqlConnection(strConStr);
try
{
//========== Open Connection ==========//
Conn.Open();
//========== Execute Command ==========//
Cmd.Connection = Conn;
Cmd.CommandTimeout = 180;
Cmd.ExecuteNonQuery();
}
catch (Exception Exc)
{
throw Exc;
}
finally
{
//======== Closing Connection ========//
if (Conn.State == ConnectionState.Open)
{ Conn.Close(); }
//======== Disposing object ========//
Conn = null;
}
}
throw Exc
会替换异常的堆栈跟踪,使其难以调试。您可以仅写throw
,或者完全省略 catch。Conn = null
实际上什么也没做,您可能正在寻找Conn.Dispose()
(它将处理关闭)。using()
块只是 try/finally/dispose 的简写 - 是缩短代码行数的好方法... - Rob Fonseca-Ensor