DataTable.CreateDataReader Method

Note: This method is new in the .NET Framework version 2.0.

Returns a DataTableReader corresponding to the data within this DataTable.

Namespace: System.Data
Assembly: System.Data (in

public DataTableReader CreateDataReader ()
public DataTableReader CreateDataReader ()
public function CreateDataReader () : DataTableReader

Return Value

A DataTableReader containing one result set, corresponding to the source DataTable instance.

The following console application creates a DataTable instance. The example then passes the filled DataTableto a procedure that calls the CreateDataReader method, which iterates through the results contained within the DataTableReader.

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

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

    // 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;

private static void PrintColumns(DataTableReader reader)
    // Loop through all the rows in the DataTableReader
    while (reader.Read())
        for (int i = 0; i < reader.FieldCount; i++)
            Console.Write(reader[i] + " ");

The example displays the following output in the console window:

1 Mary
2 Andy
3 Peter
4 Russ

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

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0

.NET Compact Framework

Supported in: 2.0