我有以下代码,如果我在 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;
}
}
最佳答案
首先,考虑使用using
,其次,让框架处理处置。 managed providers将根据连接字符串进行池化。
public void ExecuteNonQuery(SqlCommand Cmd)
{
//========== Connection ==========//
using(SqlConnection Conn = new SqlConnection(strConStr))
{
//========== Open Connection ==========//
Conn.Open();
//========== Execute Command ==========//
Cmd.Connection = Conn;
Cmd.CommandTimeout = 180;
Cmd.ExecuteNonQuery();
}
}
关于c# - 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2715714/