다음을 통해 공유


SqlDataReader.Close 메서드

정의

SqlDataReader 개체를 닫습니다.

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

구현

예제

다음 예제에서는 , 및 를 SqlCommandSqlDataReader만듭니다SqlConnection. 이 예제에서는 데이터를 읽고 콘솔 창에 기록합니다. 그런 다음 코드는 를 SqlDataReader닫습니다. 는 SqlConnection 코드 블록의 using 끝에서 자동으로 닫힙니다.

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();
                }
            }
        }
    }
}

설명

다른 용도로 연결된 SqlConnectionClose 사용하기 전에 를 사용할 SqlDataReader 때 메서드가 호출되었는지 확인해야 합니다. 메서드를 Close 직접 호출하거나 메서드를 Dispose 통해 직접 또는 using 문 블록의 컨텍스트에서 삭제할 수 있습니다.

메서드는 Close 보류 중인 결과를 사용하여 출력 매개 변수, 반환 값 및 RecordsAffectedSqlDataReader 값을 채웁니다. 이는 사용할 데이터의 양에 따라 긴 작업일 수 있습니다. 출력 값, 반환 값 및 RecordsAffected 애플리케이션에 중요하지 않은 경우 메서드가 호출되기 전에 Close 연결된 SqlCommand 개체의 메서드를 호출 Cancel 하여 닫는 시간이 단축될 수 있습니다.

주의

클래스의 메서드에서 Connection, DataReader 또는 다른 관리 개체에서 Finalize 또는 Dispose 를 호출 Close 하지 마세요. 종료자에서 클래스가 직접 소유하는 관리되지 않는 리소스만 해제해야 합니다. 클래스에 관리되지 않는 리소스가 없는 경우 클래스 정의에 Finalize 메서드를 포함하지 마세요. 자세한 내용은 가비지 수집을 참조하세요.

적용 대상