把sqldatareader变成datatable的方法
public DataTable Convertdrtodt(SqlDataReader dr)
{
DataTable dataTable = new DataTable();//建一个新的实例
for(int i=0; i<dr.FieldCount;i++)
{
DataColumn mydc = new DataColumn();//关键的一步
mydc.DataType = dr.GetFieldType(i);
mydc.ColumnName = dr.GetName(i);
dataTable.Columns.Add(mydc);//关键的第二步
}
while (dr.Read())
{
DataRow mydr = dataTable.NewRow();//关键的第三步
for (int i = 0; i < dr.FieldCount; i++)
{
mydr[i] = dr[i].ToString();
}
dataTable.Rows.Add(mydr);//关键的第四步
mydr = null;
}
dr.Close();
return (dataTable);//别忘了要返回datatable,否则出错
}
为什么说标注的几行是关键的,因为从这几行出发,可以迅速的完成所有代码,创建一个DataColumn实例(关键第一部),当然要添加了(关键第二步),你要添加当然这个实例要有内容,所有就需要有
mydc.DataType = dr.GetFieldType(i);
mydc.ColumnName = dr.GetName(i);
2、public static DataTable ConvertDataReaderToDataTalbe(IDataReader reader)
{
DataTable table = new DataTable();
for(int i = 0; i < reader.FieldCount; i++)
{
table.Columns.Add(reader.GetName(i), reader.GetFieldType(i));
}
table.BeginLoadData();
object[] values = new object[reader.FieldCount - 1];
while(reader.Read())
{
reader.GetValues(values);
table.LoadDataRow(values, true);
}
reader.Close();
table.EndLoadData();
return table;
}
浙公网安备 33010602011771号