0

在 C# 中为 SQL 连接使用using块时,这也是一种关闭方法吗?我在问,因为我需要明确使用该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块关闭连接本身?

4

5 回答 5

0

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

于 2013-03-25T10:08:07.717 回答
0

其他答案是正确的,但是,我想更明确一点。MSDN声明如下

CloseDispose在功能上是等效的。

因为 usingusing将调用Dispose一个单独的调用 toClose是不需要的。

于 2013-03-25T10:09:40.070 回答
0

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

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

于 2013-03-25T10:07:08.760 回答
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();关闭要关闭的东西。

于 2013-03-25T10:07:14.373 回答
0

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

换句话说,将其视为只能在范围内访问的局部变量。希望这会有所帮助。

于 2013-03-25T10:18:50.603 回答