다음을 통해 공유


DataReader 만들기

DataTableDataSet 클래스에는 CreateDataReader의 내용이나 DataTable 개체의 DataSet 컬렉션 내용을 하나 이상의 정방향 읽기 전용 커서로 반환하는 Tables 메서드가 있습니다.

예시

다음 콘솔 애플리케이션에서는 DataTable 인스턴스를 만듭니다. 그런 다음, 이 예제에서는 채워진 DataTableCreateDataReader 메서드를 호출하는 프로시저로 전달하여 DataTableReader 내에 포함된 결과를 반복합니다.

static void Main()
{
    TestCreateDataReader(GetCustomers());
    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
}

static void TestCreateDataReader(DataTable dt)
{
    // Given a DataTable, retrieve a DataTableReader
    // allowing access to all the tables' data:
    using (DataTableReader reader = dt.CreateDataReader())
    {
        do
        {
            if (!reader.HasRows)
            {
                Console.WriteLine("Empty DataTableReader");
            }
            else
            {
                PrintColumns(reader);
            }
            Console.WriteLine("========================");
        } while (reader.NextResult());
    }
}

static DataTable GetCustomers()
{
    // Create sample Customers table, in order
    // to demonstrate the behavior of the DataTableReader.
    DataTable table = new();

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 1, "Mary" });
    table.Rows.Add(new object[] { 2, "Andy" });
    table.Rows.Add(new object[] { 3, "Peter" });
    table.Rows.Add(new object[] { 4, "Russ" });
    return table;
}

static void PrintColumns(DataTableReader reader)
{
    // Loop through all the rows in the DataTableReader
    while (reader.Read())
    {
        for (var i = 0; i < reader.FieldCount; i++)
        {
            Console.Write(reader[i] + " ");
        }
        Console.WriteLine();
    }
}
Sub Main()
    TestCreateDataReader(GetCustomers())
    Console.WriteLine("Press any key to continue.")
    Console.ReadKey()
End Sub

Private Sub TestCreateDataReader(ByVal dt As DataTable)
    ' Given a DataTable, retrieve a DataTableReader
    ' allowing access to all the tables's data:
    Using reader As DataTableReader = dt.CreateDataReader()
        Do
            If Not reader.HasRows Then
                Console.WriteLine("Empty DataTableReader")
            Else
                PrintColumns(reader)
            End If
            Console.WriteLine("========================")
        Loop While reader.NextResult()
    End Using
End Sub

Private Function GetCustomers() As DataTable
    ' Create sample Customers table, in order
    ' to demonstrate the behavior of the DataTableReader.
    Dim table As New DataTable

    ' Create two columns, ID and Name.
    Dim idColumn As DataColumn = table.Columns.Add("ID", GetType(Integer))
    table.Columns.Add("Name", GetType(String))

    ' Set the ID column as the primary key column.
    table.PrimaryKey = New DataColumn() {idColumn}

    table.Rows.Add(New Object() {1, "Mary"})
    table.Rows.Add(New Object() {2, "Andy"})
    table.Rows.Add(New Object() {3, "Peter"})
    table.Rows.Add(New Object() {4, "Russ"})
    Return table
End Function

Private Sub PrintColumns( _
   ByVal reader As DataTableReader)

    ' Loop through all the rows in the DataTableReader.
    Do While reader.Read()
        For i As Integer = 0 To reader.FieldCount - 1
            Console.Write(reader(i).ToString() & " ")
        Next
        Console.WriteLine()
    Loop
End Sub

이 예제에서는 콘솔 창에 다음 출력을 표시합니다.

1 Mary  
2 Andy  
3 Peter  
4 Russ  

참고 항목