要将OleDbDataReader查询结果转换为DataTable,可以按照以下步骤进行操作:
- 创建一个空的DataTable对象。
DataTable dataTable = new DataTable();
- 使用OleDbDataReader的GetSchemaTable方法获取查询结果的模式信息,并将其添加到DataTable中。
DataTable schemaTable = reader.GetSchemaTable(); foreach (DataRow row in schemaTable.Rows) { DataColumn column = new DataColumn(); column.ColumnName = row["ColumnName"].ToString(); column.DataType = (Type)row["DataType"]; dataTable.Columns.Add(column); }
- 使用OleDbDataReader的Read方法,逐行读取查询结果并将其添加到DataTable中。
while (reader.Read()) { DataRow dataRow = dataTable.NewRow(); for (int i = 0; i < reader.FieldCount; i++) { dataRow[i] = reader.GetValue(i); } dataTable.Rows.Add(dataRow); }
完整示例代码如下:
DataTable dataTable = new DataTable(); DataTable schemaTable = reader.GetSchemaTable(); foreach (DataRow row in schemaTable.Rows) { DataColumn column = new DataColumn(); column.ColumnName = row["ColumnName"].ToString(); column.DataType = (Type)row["DataType"]; dataTable.Columns.Add(column); } while (reader.Read()) { DataRow dataRow = dataTable.NewRow(); for (int i = 0; i < reader.FieldCount; i++) { dataRow[i] = reader.GetValue(i); } dataTable.Rows.Add(dataRow); }
这样,OleDbDataReader查询结果就会转换为DataTable对象。