代码之家  ›  专栏  ›  技术社区  ›  Luis Espinoza

SqlDataReader关闭和SqlConnection

  •  2
  • Luis Espinoza  · 技术社区  · 7 年前

    在这种情况下,连接会发生什么?我不知道读者。Close()关闭打开的sqlconnection。

    private static void ReadOrderData(string connectionString)
    {
        string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders;";
    
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            SqlCommand command = new SqlCommand(queryString, connection);
            connection.Open();
    
            SqlDataReader reader = command.ExecuteReader();
    
            // Call Read before accessing data.
            while (reader.Read())
            {
                Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
            }
    
            // Call Close when done reading.
            reader.Close();
        }
    }
    
    3 回复  |  直到 7 年前
        1
  •  3
  •   Sabrina Fernandez Vazzino    7 年前

    读者Close()不会关闭SqlConnection,但由于您有一个 使用

        2
  •  2
  •   Graham francescalus    7 年前

    关闭读卡器不会改变连接状态。如果你真的想这么做,你可以通过 CommandBehavior.CloseConnection ExecuteReader SqlCommand

    SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
    

    建议您放置一个 using 封锁你所有的一次性类型,比如你的 SqlDataReader 例子

    using(SqlDataReader reader = command.ExecuteReader()) {
      // rest of code
    }
    

    CommandBehavior

        3
  •  1
  •   Sandip Bantawa    7 年前

    检查 Connection State

    if(connection.State == ConnectionState.Open)
    {
        connection.Close();
    }
    connection.Open();
    

    既然你在做

    using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
    

    using(SqlCommand command = new SqlCommand(queryString, connection))
    

    using(SqlDataReader reader = command.ExecuteReader())
    

    出于上述相同的原因。