Sql server SqlDataReader关闭和SqlConnection

Sql server SqlDataReader关闭和SqlConnection,sql-server,ado.net,sqldatareader,sqlconnection,Sql Server,Ado.net,Sqldatareader,Sqlconnection,在这种情况下,连接会发生什么情况?我不知道reader.Close()是否关闭打开的sqlconnection private static void ReadOrderData(string connectionString) { string queryString = "SELECT OrderID, CustomerID FROM dbo.Orders;"; using (SqlConnection connection = new SqlConnection(conn

在这种情况下,连接会发生什么情况?我不知道reader.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();
    }
}
检查

既然你在做

using (SqlConnection connection =
               new SqlConnection(connectionString))
    {
这将确保连接在从IDisposable继承时被释放,尽管存在异常。和对象一旦退出其相应的作用域就被释放

更好地利用

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

出于上述相同原因。

检查

既然你在做

using (SqlConnection connection =
               new SqlConnection(connectionString))
    {
这将确保连接在从IDisposable继承时被释放,尽管存在异常。和对象一旦退出其相应的作用域就被释放

更好地利用

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


出于上述相同的原因。

reader.Close()不会关闭SqlConnection,但由于您有一个using语句,一旦退出using块,连接仍将关闭

reader.Close()不会关闭SqlConnection,但由于您有一个using语句,一旦退出using块,连接仍将关闭

关闭读卡器不会改变连接状态。如果确实要这样做,可以将
CommandBehavior.CloseConnection
传递给
SqlCommand
实例的
ExecuteReader
方法

SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
using(SqlDataReader reader = command.ExecuteReader()) {
  // rest of code
}
建议在所有可使用类型(如
SqlDataReader
实例)周围放置
using

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

有关更多选项,请参见。

关闭读卡器不会改变连接状态。如果确实要这样做,可以将
CommandBehavior.CloseConnection
传递给
SqlCommand
实例的
ExecuteReader
方法

SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
using(SqlDataReader reader = command.ExecuteReader()) {
  // rest of code
}
建议在所有可使用类型(如
SqlDataReader
实例)周围放置
using

SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
using(SqlDataReader reader = command.ExecuteReader()) {
  // rest of code
}
有关更多选项,请参见