다음을 통해 공유


SqlDataReader 클래스

SQL Server 데이터베이스에서 행의 앞으로만 이동 가능한 스트림을 읽을 수 있게 합니다. 이 클래스는 상속될 수 없습니다.

네임스페이스: System.Data.SqlClient
어셈블리: System.Data(system.data.dll)

구문

‘선언
Public Class SqlDataReader
    Inherits DbDataReader
    Implements IDataReader, IDisposable, IDataRecord
‘사용 방법
Dim instance As SqlDataReader
public class SqlDataReader : DbDataReader, IDataReader, IDisposable, IDataRecord
public ref class SqlDataReader : public DbDataReader, IDataReader, IDisposable, IDataRecord
public class SqlDataReader extends DbDataReader implements IDataReader, IDisposable, 
    IDataRecord
public class SqlDataReader extends DbDataReader implements IDataReader, IDisposable, 
    IDataRecord

설명

SqlDataReader를 만들려면, 생성자를 직접 사용하지 않고 SqlCommand 개체의 ExecuteReader 메서드를 호출해야 합니다.

SqlDataReader가 사용 중이면, 관련 SqlConnectionSqlDataReader를 사용하고 있으며, 이를 닫지 않으면 SqlConnection에서 다른 작업을 수행할 수 없습니다. 이런 상태는 SqlDataReaderClose 메서드가 호출될 때까지 적용됩니다. 예를 들어, Close를 호출할 때까지 출력 매개 변수를 검색할 수 없습니다.

데이터를 읽는 동안 다른 프로세스나 스레드에 의해 결과 집합이 변경되면 SqlDataReader의 사용자가 이를 볼 수 있습니다. 그러나 세부적인 동작은 타이밍에 따라 달라집니다.

IsClosedRecordsAffectedSqlDataReader를 닫은 후에 호출할 수 있는 유일한 속성입니다. SqlDataReader가 존재하는 동안 RecordsAffected 속성에 액세스할 수 있지만, RecordsAffected의 값을 반환하기 전에 항상 Close를 호출하여 반환 값이 정확하도록 합니다.

참고

최적 성능을 위해, SqlDataReader는 불필요한 개체를 만들거나 데이터의 불필요한 복사본을 만들지 말아야 합니다. 그에 따라 GetValue와 같은 메서드에 대한 복수 호출은 같은 개체에 대한 참조를 반환합니다. GetValue와 같은 메서드에 의해 반환된 개체의 내부 값을 수정하면, 주의해야 합니다.

예제

다음 예제에서는 SqlConnection, SqlCommand, SqlDataReader 등을 만듭니다. 이 예제에서는 데이터를 읽고 해당 데이터를 콘솔 창에 씁니다. 그런 다음 SqlDataReader를 닫습니다. SqlConnectionusing 코드 블록의 끝에서 자동으로 닫힙니다.

Private Sub ReadOrderData(ByVal connectionString As String)
    Dim queryString As String = _
        "SELECT OrderID, CustomerID FROM dbo.Orders;"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()

        Dim reader As SqlDataReader = command.ExecuteReader()

        ' Call Read before accessing data.
        While reader.Read()
            Console.WriteLine(String.Format("{0}, {1}", _
                reader(0), reader(1)))
        End While

        ' Call Close when done reading.
        reader.Close()
    End Using
End Sub
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();
    }
}

상속 계층 구조

System.Object
   System.MarshalByRefObject
     System.Data.Common.DbDataReader
      System.Data.SqlClient.SqlDataReader

스레드로부터의 안전성

이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

플랫폼

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

SqlDataReader 멤버
System.Data.SqlClient 네임스페이스

기타 리소스

ADO.NET에서 데이터 연결 및 검색
.NET Framework Data Provider for SQL Server 사용