2015-10-14 62 views
1

是否需要单独处理SqlConnection以及SqlCommand?是否需要配置SqlConnection以及SqlCommand?

我在做一个应用程序的一些维护工作,发现下面的代码:

public void CallStoredProc(string storedProcName) 
{ 
    using (SqlCommand command = new SqlCommand(storedProcName, CreateConnection())) 
    { 
     command.CommandType = CommandType.StoredProcedure; 
     command.Connection.Open(); 

     // Additional code here. 

     command.ExecuteNonQuery(); 
    } 
} 

请问这样清理关闭SqlConnection正确,正常情况下,以及是否存在错误?或者我们必须将代码更改为如下所示:

public void CallStoredProc(string storedProcName) 
{ 
    using (SqlConnection connection = CreateConnection()) 
    { 
     using (SqlCommand command = new SqlCommand(storedProcName, connection)) 
     { 
      command.CommandType = CommandType.StoredProcedure; 
      command.Connection.Open(); 

      // Additional code here. 

      command.ExecuteNonQuery(); 
     } 
    } 
} 
+1

你会在这里得到答案http://stackoverflow.com/questions/12603093/can-you-dispose-of-multiple-objects-within-a-using-block http://stackoverflow.com/问题/ 9396064 /使用语句与 - 多变量 – andy

回答

2

是的,您将不得不分开处理(连接)连接。您也可以在source code中看到:SqlCommand.Dispose()不会关闭或处理它使用的连接(顺便说一句,如果无法使用相同的连接执行多个命令,那将会很糟糕)。

3

是的,有必要在您的代码段执行后处置sqlconnection和sqlcommand对象。

现在,有两种方法可以实现此目的。 1.使用语句编写代码,该语句将负责处理对象,因为sqlconnection和sqlcommand实现了用于处理对象的IDisposable接口。2.通过在sqlconnection对象上显式调用.close()方法。

相关问题