C#使用SQL方法需要一个close方法吗?

时间:2013-03-25 10:03:57

标签: c# sql connection using

在C#中使用using块进行SQL连接时,这也是一种关闭方法吗?我问我需要明确使用con.Open()方法。我找到了这个例子:

using (SqlConnection con = new SqlConnection(connectionString))
{
   con.Open(); // open method

   string queryString = "select * from db";
   SqlCommand cmd = new SqlCommand(queryString, con);
   SqlDataReader reader = cmd.ExecuteReader();
   reader.Read();

   ???         // What about a close method?
}

或者using阻止关闭连接本身吗?

5 个答案:

答案 0 :(得分:0)

你不必关闭它 - using就足够了。 MSDN说:

  

要确保始终关闭连接,请打开using块内部的连接,如以下代码片段所示。这样做可确保在代码退出块时自动关闭连接。

答案 1 :(得分:0)

using转换为:

SqlConnection con = new SqlConnection(connectionString)
try
{
   con.Open(); <-- open method

   string queryString = "select * from db";
   SqlCommand cmd = new SqlCommand(queryString, con);
   SqlDataReader reader = cmd.ExecuteReader();
   reader.Read();
}
finally
{
    if (con!= null)
        ((IDisposable)con).Dispose();
}

((IDisposable)con.Dispose();关闭要关闭的内容。

答案 2 :(得分:0)

不,您不必调用Close - SqlConnection的方法。 当它在使用结束时处理时,它会自动关闭。 (Dispose - 方法调用Close()[1]

答案 3 :(得分:0)

其他答案是正确的,但是,我希望更明确一些 MSDN声明如下:

  

关闭 Dispose 功能相同。

由于使用using会拨打Dispose,因此不需要另外调用Close

答案 4 :(得分:0)

当您使用'using'关键字并在其中创建连接时。 当到达右括号时,只要有'using'关键字的范围,连接就会打开,连接会自动关闭,因为它是在范围内定义的,并且范围不存在

换句话说,

将其视为可在范围内访问的局部变量。 希望这会有所帮助。