当前位置:  开发笔记 > 编程语言 > 正文

using语句外的SQL Connection构造函数

如何解决《using语句外的SQLConnection构造函数》经验,为你挑选了1个好方法。

我有以下代码:

SqlConnection Connect = new SqlConnection(IST_DBConnect.SQLConnectionString);
SqlCommand command = new SqlCommand(sqlCommandString, Connect);
RequestRow Result = new RequestRow();
Connect.Open();
using (Connect)
...

这不是我的代码,我会在using语句中编写SQL Connection的创建,这是我朋友的代码,如果在运行中出现问题,我不确定这是否可以正确处理SQL连接对象。构造函数或Open方法中。所以我的问题是,如果创建了连接对象,并且open方法抛出异常=>连接从未打开,是否可以正确处理?

谢谢。



1> Soner Gönül..:

来自文件 ;

通常,使用IDisposable对象时,应 using语句中声明实例化它。

您可以实例化资源对象,然后将变量传递给using语句,但这不是最佳实践。在这种情况下,即使控制对象可能不再有权访问其非托管资源,该对象在控制离开using块之后仍保留在作用域中。换句话说,它将不再完全初始化。如果尝试在using块之外使用该对象,则有引发异常的风险。因此,通常最好在using语句中实例化对象并将其范围限制为using块。

根据您的示例,如果Open方法的构造函数出错,则using 无法进行任何操作,因为初始化它后将其用作资源。

当然,这是最好的方法。

using(var Connect = new SqlConnection(IST_DBConnect.SQLConnectionString))
using(var command = Connect.CreateCommand())
{
   // 
} // <-- Both Connect and command will disposed here no matter exception is thrown or not

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有