一、引言
一直以来,对于.NET平台下的中小型Web应用开发许多程序员都选择使用随同微软开源示例工程PetShop一同发行的SQLHelper(或者其简化版本)。本人也十分喜欢使用,因为其大大简化了数据访问层的设计,其稳定性已经得到业界人士的广泛好评。
但是,美中不足的是,实际开发中我们常常需要使用到把SqlDataReader转换为DataTable的函数。
二、为SQLHelper类增补SqlDataReader转换为DataTable函数
下面,我推荐一个静态数据转换函数ConvertDataReaderToDataTable(),负责把SqlDataReader对象转换为DataTable对象。该方法首先创建一个DataTable对象dataTable,并为对象dataTable添加SqlDataReader对象中涉及的数据列。然后逐行读取SqlDataReader对象中每一行数据,并把数据添加到对象dataTable中。最后关闭数据读取器,返回对象dataTable。
方法static DataTable ConvertDataReaderToDataTable (SqlDataReaderdataReader)的程序代码如下:
public static DataTableConvertDataReaderToDataTable(IDataReader reader)
{
DataTablebjDataTable = new DataTable();//创建一个DataTable对象
intintFieldCount = reader.FieldCount;
//为DataTable对象添加对应的列字段信息
for (intintCounter = 0; intCounter < intFieldCount; ++intCounter)
{ objDataTable.Columns.Add(reader.GetName(intCounter),reader.GetFieldType(intCounter));
}
objDataTable.BeginLoadData();
object[]bjValues = new object[intFieldCount];
//逐行读取SqlDataReader对象中每一行数据
//并把数据添加到对象dataTable中
while(reader.Read())
{
reader.GetValues(objValues);
objDataTable.LoadDataRow(objValues, true);
}
///关闭数据读取器
reader.Close();
objDataTable.EndLoadData() ;
returnobjDataTable;// 返回一个DataTable对象
}
上面的静态方法已经多次为本人应用于实际开发中,效果良好,有兴趣的朋友不妨一试。