【问题标题】:C# Using SQL Method needs a close-method? [duplicate]C# 使用 SQL 方法需要关闭方法吗? [复制]
【发布时间】:2013-03-14 18:41:56
【问题描述】:

在 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 块是否会自行关闭连接?

【问题讨论】:

  • using 将调用 Dispose 的连接,而 Dispose 将调用 Close。
  • 所以当我使用它时,使用将关闭所有连接。所有连接都意味着全局,还是只有这个方法/类中的这个连接在哪里?
  • @ManuelFischer 仅使用语句连接(SqlConnection iWillDisposeConn = new...
  • 你真的应该在 using 块中拥有你的命令和阅读器 - 它们也是一次性的。

标签: c# sql connection using


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    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(); 关闭要关闭的内容。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        CloseDispose 在功能上是等效的。

        因为使用using 会调用Dispose,所以不需要单独调用Close

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2015-09-12
            • 1970-01-01
            • 1970-01-01
            • 2017-10-19
            • 2012-02-23
            • 2012-10-18
            • 2013-03-07
            • 2012-11-04
            相关资源
            最近更新 更多