我经常发现这个问题的结果相互矛盾。让我们看看这个运行SQL查询的C#代码:
using (SqlConnection cn = new SqlConnection(strConnectString))
{
cn.Open();
using (SqlCommand cmd = new SqlCommand(strSQL, cn))
{
cmd.ExecuteNonQuery();
}
//Do I need to call?
cn.Close();
}
我需要调用最后的cn.Close()
吗?我之所以问这个问题是因为在一个高并发的Web应用程序中,我会耗尽连接池中的连接。
SqlConnection cn
定义为静态变量? - c00000fd它的非确定性终止
= 错误。连接在退出using
语句作用域后立即被释放。这与垃圾回收无关。事实上,非确定性GC正是为什么在.NET中引入IDisposable接口和Dispose模式的原因。 - Eric J.