1

我们偶尔会遇到需要重新启动的 SqlServer 锁定,我正在查看遗留代码以尝试找出原因。

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

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

如果一个页面进行数据库访问,它以

oCon.Open();

并以:

oCon.Close();   
oCon.Dispose();

但是有些页面不做数据库访问,所以没有Dispose();调用。

SqlConnection我的问题是,是否会因为创建一个无法得到的而产生开销Disposed()

感谢您的任何建议

4

2 回答 2

0

如果连接未打开,则无需调用Dispose,当您创建 SQL 连接实例时,它只是普通的托管资源,将由 CLR 自动处置。无论如何,就灵活性和可维护性而言,关闭或处置任何 SQL 连接是一个好习惯。

于 2013-10-24T23:04:39.497 回答
0

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

于 2013-10-24T23:13:23.077 回答