6.3. Converting a DataReader to a DataTable

Problem

You need to transfer data from a DataReader to a DataTable.

Solution

Use either the Load( ) method of the DataTable class or programmatically create a DataTable from the DataReader metadata schema and load the data from the DataReader into the DataTable. The solution demonstrates both approaches.

To show the first approach, a DataReader is created returning all records in the Person.Contact table in AdventureWorks. The Load( ) method of the DataTable is used to load the DataReader into a DataTable. The first five rows from the DataTable are output to the console.

To show the second approach, a DataReader is created, returning all records in the Person.Contact table in AdventureWorks. Next, a DataTable schema is created in the destination DataSet using the schema information returned by the GetSchemaTable( ) method of the DataReader. Then, the GetData( ) method of the DataReader loads each row of data into an array of objects, and adds it to the DataTable using the Add( ) method of the contained DataRowCollection. The first five rows from the DataTable are output to the console.

The C# code in Program.cs in the project ConvertDataReaderToDataTable is shown in Example 6-3.

Example 6-3. File: Program.cs for ConvertDataReaderToDataTable solution

using System; using System.Data; using System.Data.SqlClient; using System.Collections.Generic; namespace ConvertDataReaderToDataTable { class Program { static void Main(string[] args) { string sqlConnectString ...

Get ADO.NET 3.5 Cookbook, 2nd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.