2010-05-31 90 views

回答

13
new SqlConnection(connectionString) 

根据提供的连接字符串创建新的SqlConnection实例。

SqlConnection cn = ... 

其分配给新的局部变量cn(作用域到using语句),其保持所构造的连接对象。

using(...) 

是一个using声明 - 它保证了连接末Dispose() -d,即使有异常抛出(在这种情况下Dispose()手段将其关闭/释放到池等)

整个代码是本质

{ // this { } scope is to limit the "cn" 
    SqlConnection cn = new SqlConnection(connectionString); 
    try { // the body of the using block 
     ... 
    } finally { // dispose if not null 
     if(cn != null) { cn.Dispose(); } 
    } 
} 
2

可以确保SqlConnection的是在“使用”范围

4

它排除了SqlConnection不是不再需要它后结束时被销毁。在这种情况下,SqlConnection可能会留下一些非托管资源,您应该清理它们。 SqlConnection执行IDisposable,这意味着您可以(应该)在完成使用后调用Dispose

它基本上是一个速记:

try { 
    SqlConnection cn = new SqlConnection(connectionString); 

    // whatever other code 
} 
finally { 
    if (cn != null) 
    { 
     cn.Dispose(); 
    } 
} 

当您使用usingcn范围也扩大外try(以finally)。

如果您想了解更多信息,请查看MSDN's article关于此主题。

+3

严格来说,cn的范围是*外部* try#... – 2010-05-31 07:56:15

+0

谢谢Marc。为更大的利益编辑。 – 2010-05-31 08:04:36

1

using语句可以应用于实现接口IDisposable的对象。 在使用范围的末尾,在对象上调用Dispose。

0

这确保在控制离开使用(){..}子句时释放连接。

由于异常,函数返回,从循环中断,转到或正常离开作用域,可能会发生离开。很方便。