C# 是否需要处理SqlConnection以及SqlCommand?
是否需要分别处理SqlConnection和SqlCommand 我正在对一个应用程序进行维护工作,发现以下代码:C# 是否需要处理SqlConnection以及SqlCommand?,c#,ado.net,sqlconnection,sqlcommand,C#,Ado.net,Sqlconnection,Sqlcommand,是否需要分别处理SqlConnection和SqlCommand 我正在对一个应用程序进行维护工作,发现以下代码: public void CallStoredProc(string storedProcName) { using (SqlCommand command = new SqlCommand(storedProcName, CreateConnection())) { command.CommandType = CommandType.StoredPr
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();
}
}
}
是的,您必须单独处理连接。您也可以在:
SqlCommand.Dispose()中看到这一点。Dispose()不关闭或处理它使用的连接(顺便说一句,这将是不好的,因为您不能用同一个连接执行多个命令)。是的,您必须单独处理连接。您也可以在:SqlCommand.Dispose()中看到这一点。Dispose()不关闭或处理它使用的连接(顺便说一句,这将是不好的,因为您不能用同一个连接执行多个命令)。是的,在执行代码段后,有必要处理sqlconnection和SqlCommand对象
现在,有两种方法可以实现这一点:
使用负责处理对象的语句编写代码,因为sqlconnection和sqlcommand实现了负责处理对象的IDisposable接口
通过在sqlconnection对象上显式调用.close()方法
是的,有必要在代码执行后处理sqlconnection和sqlcommand对象
现在,有两种方法可以实现这一点:
使用负责处理对象的语句编写代码,因为sqlconnection和sqlcommand实现了负责处理对象的IDisposable接口
通过在sqlconnection对象上显式调用.close()方法
你会在这里得到答案你会在这里得到答案