如果我不打开(),我应该Dispose()一个SqlConnection吗?

时间:2013-10-24 22:54:50

标签: c# asp.net dispose sqlconnection

我们偶尔会遇到需要重启的SqlServer锁定,而我正在审查遗留代码以尝试隔离原因。

在每个c#ASP.Net页面中包含的库文件中,我发现:

sConString  = ConfigurationSettings.AppSettings.Get("SQLConnString"); 
oCon = new SqlConnection(sConString);

如果页面进行数据库访问,则以

开头
oCon.Open();

并以:

结束
oCon.Close();   
oCon.Dispose();

但有些页面没有进行数据库访问,因此没有调用Dispose();

我的问题是,创建SqlConnection并不会导致Disposed()导致开销?

感谢您的任何建议

2 个答案:

答案 0 :(得分:0)

如果没有打开连接,则无需调用Dispose,当您创建SQL连接实例时,它只是普通的受管资源,将由CLR自动处理。无论如何,在灵活性和可维护性方面关闭或处置任何SQL连接是一种好习惯。

答案 1 :(得分:0)

Dispose()与内存管理有关,而不是连接管理。我不认为这会解决你的问题。您可能希望确保在Try-Catch的finally块中关闭连接。这样,如果您的打开连接成功,连接将被关闭。