将DataReader转换为DataTable的一个函数

本文介绍了一段使用C#将IDataReader的数据转换为DataTable的实用代码。该方法首先创建了一个新的DataTable对象,然后根据IDataReader的字段数量来添加对应的列,并设置列的数据类型。接着,它开始加载数据,在每次读取一行数据后,将其添加到DataTable中。最后关闭数据读取器并完成数据加载过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有人问到这个,就参照DNN的实现,用C#写了一个。记录下来作为备忘。

 

 1None.gif        public static DataTable ConvertDataReaderToDataTable(IDataReader reader)
 2ExpandedBlockStart.gifContractedBlock.gif        dot.gif{
 3InBlock.gif            DataTable objDataTable = new DataTable();
 4InBlock.gif            int intFieldCount = reader.FieldCount;
 5InBlock.gif            for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)
 6ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
 7InBlock.gif                objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));
 8ExpandedSubBlockEnd.gif            }

 9InBlock.gif
10InBlock.gif            objDataTable.BeginLoadData();
11InBlock.gif            
12InBlock.gif            object[] objValues = new object[intFieldCount];
13InBlock.gif            while (reader.Read())
14ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
15InBlock.gif                reader.GetValues(objValues);
16InBlock.gif                objDataTable.LoadDataRow(objValues, true);
17ExpandedSubBlockEnd.gif            }

18InBlock.gif            reader.Close();
19InBlock.gif            objDataTable.EndLoadData() ;
20InBlock.gif 
21InBlock.gif            return objDataTable;
22ExpandedBlockEnd.gif        }

23None.gif

如果需要的话,columns的详细列属性还可以设置,比如IsDbNull等等。reader还有一个GetSchemaTable的方法,可以获得详细的列属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值