[ Team LiB ] Recipe 5.9 Loading anADORecordsetintoaDataSet Problem You want to convert anADORecordset generated within a legacy application to aDataSet so that you can use it in a .NET application. Solution Use COM interop or the Fill( ) method of the OLE DB data provider DataAdapter. You'll need a reference to the Primary Interop Assembly (PIA) for ADO provided in the file ADODB.DLL. Select adodb from the .NET tab in Visual Studio .NET's Add Reference Dialog. The sample code creates anADORecordset for the Orders table in Northwind. The Fill( ) method of the OleDbDataAdapter is used to load the Recordsetintoa DataTable. The C# code is shown in Example 5-9 . Example 5-9. File: AdoRecordsetForm.cs // Namespaces, variables, and constants using System; using System.Data; using System.Data.OleDb; // . . . // Open anADO connection. ADODB.Connection conn = new ADODB.Connection( ); conn.Open("Provider = SQLOLEDB;Data Source = (local);" + "Initial Catalog = northwind","sa","",0); // Create anADO recordset. ADODB.Recordset rs = new ADODB.Recordset( ); rs.Open("SELECT * FROM Orders", conn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 0); // Create and fill a dt from the ADO recordset. DataTable dt = new DataTable("Orders"); (new OleDbDataAdapter( )).Fill(dt, rs); conn.Close( ); // Bind the default view of the dt to the grid. dataGrid.DataSource = dt.DefaultView; Discussion One of the overloads of the OLE DB .NET DataAdapter.Fill( ) method accepts anADORecordset or Record object. The COM component that returns anADORecordset or Record object is consumed using COM interop. While the data can be loaded intoaDataSet in this way, there is no way to reconcile the changes made to the data in the DataSet with the data source underlying the ADO object. This must be explicitly handled. There is no FillSchema( ) method which allows the schema of anADORecordset to be retrieved intoa DataSet. [ Team LiB ] . Team LiB ] Recipe 5.9 Loading an ADO Recordset into a DataSet Problem You want to convert an ADO Recordset generated within a legacy application to a DataSet. be loaded into a DataSet in this way, there is no way to reconcile the changes made to the data in the DataSet with the data source underlying the ADO object.