Delen via


Een DataReader maken

De DataTable en DataSet klassen hebben een CreateDataReader methode waarmee de inhoud van de DataTable verzameling of de inhoud van de verzameling van het DataSet object Tables wordt geretourneerd als een of meer alleen-lezen resultatensets die alleen-lezen zijn.

Opmerking

Met de volgende consoletoepassing wordt een DataTable exemplaar gemaakt. In het voorbeeld wordt vervolgens de choropleten doorgegeven DataTable aan een procedure waarmee de CreateDataReader methode wordt aangeroepen, die de resultaten in de DataTableReadermethode doorloopt.

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

In het voorbeeld ziet u de volgende uitvoer in het consolevenster:

1 Mary  
2 Andy  
3 Peter  
4 Russ  

Zie ook