DataSet.CreateDataReader Method (DataTable())
Returns a DataTableReader with one result set per DataTable.
Assembly: System.Data (in System.Data.dll)
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.DataTableReaderA 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
Available since 2.0