DataSet.CreateDataReader Method (DataTable())

Returns a DataTableReader with one result set per DataTable.

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

'Declaration
Public Function CreateDataReader ( _
	ParamArray dataTables As DataTable() _
) As DataTableReader

Parameters

dataTables
Type: System.Data.DataTable()

An array of DataTables providing the order of the result sets to be returned in the DataTableReader.

Return Value

Type: System.Data.DataTableReader
A DataTableReader containing one or more result sets, corresponding to the DataTable instances contained within the source DataSet. The returned result sets are in the order specified by the dataTables parameter.

In order to ensure that the order of the result sets within the returned DataTableReader, if a DataTable within the DataSet is empty, it is represented by an empty result set within the returned DataTableReader. Because this overloaded version allows you to supply a list of DataTable instances as parameters, you can specify the order in which the result sets appear within the returned DataTableReader.

This example, a Console application, creates three DataTable instances and adds each to a DataSet. The example calls the CreateDataReader method and displays the contents of the returned DataTableReader. Note that the order of the result sets in the DataTableReader is controlled by the order of the DataTable instances passed as parameters. The example displays the results in the Console window.

Private emptyTable As DataTable
Private customerTable As DataTable
Private productTable As DataTable

Sub Main()
  Dim dataSet As New DataSet
  ' Add some DataTables to the DataSet, including 
  ' an empty DataTable:

  emptyTable = New DataTable()
  productTable = GetProducts()
  customerTable = GetCustomers()

  dataSet.Tables.Add(customerTable)
  dataSet.Tables.Add(emptyTable)
  dataSet.Tables.Add(productTable)
  TestCreateDataReader(dataSet)

  Console.WriteLine("Press any key to continue.")
  Console.ReadKey()
End Sub 

Private Sub TestCreateDataReader(ByVal dataSet As DataSet)
  ' Given a DataSet, retrieve a DataTableReader 
  ' allowing access to all the DataSet's data. 
  ' Even though the dataset contains three DataTables, 
  ' this code will only display the contents of two of them, 
  ' because the code has limited the results to the  
  ' DataTables stored in the tables array. Because this 
  ' parameter is declared using the ParamArray keyword,  
  ' you could also include a list of DataTable instances  
  ' individually, as opposed to supplying an array of  
  ' DataTables, as in this example: 
  Using reader As DataTableReader = _
    dataSet.CreateDataReader(productTable, emptyTable)
    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 Function GetProducts() As DataTable
  ' Create sample Products 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, "Wireless Network Card"})
  table.Rows.Add(New Object() {2, "Hard Drive"})
  table.Rows.Add(New Object() {3, "Monitor"})
  table.Rows.Add(New Object() {4, "CPU"})
  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

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

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

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft