Compartilhar via


SqlDataReader.Close Método

Definição

Fecha o objeto SqlDataReader.

public:
 override void Close();
public override void Close ();
override this.Close : unit -> unit
Public Overrides Sub Close ()

Implementações

Exemplos

O exemplo a seguir cria um SqlConnection, um SqlCommande um SqlDataReader. O exemplo lê os dados, gravando-os na janela do console. Em seguida, o código fecha o SqlDataReader. O SqlConnection é fechado automaticamente no final do using bloco de código.

using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=SSPI";
        ReadOrderData(str);
    }
    private static void ReadOrderData(string connectionString)
    {
        string queryString =
            "SELECT OrderID, CustomerID FROM dbo.Orders;";

        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            connection.Open();

            using (SqlCommand command =
                new SqlCommand(queryString, connection))
            {
                using (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();
                }
            }
        }
    }
}

Comentários

Você deve garantir que o Close método seja chamado quando você estiver usando o SqlDataReader antes de usar o associado SqlConnection para qualquer outra finalidade. O Close método pode ser chamado diretamente ou por meio do Dispose método , descartando diretamente ou no contexto do bloco de instrução using .

O Close método preenche os valores para parâmetros de saída, valores retornados e RecordsAffected no SqlDataReader consumindo quaisquer resultados pendentes. Essa pode ser uma operação longa dependendo da quantidade de dados a serem consumidos. Se os valores de saída, os valores retornados e RecordsAffected não forem importantes para o aplicativo, o tempo para fechar poderá ser reduzido chamando o Cancel método do objeto associado SqlCommand antes que o Close método seja chamado.

Cuidado

Não chame Close nem Dispose em um Connection, um DataReader ou qualquer outro objeto gerenciado no Finalize método de sua classe. Em um finalizador, você só deve liberar recursos não gerenciados que sua classe possui diretamente. Se a classe não tiver nenhum recurso não gerenciado, não inclua um método Finalize em sua definição de classe. Para obter mais informações, confira Coleta de lixo.

Aplica-se a