您的位置:首页 > 数据库

把sqldatareader变成datatable的方法

2008-12-19 12:44 507 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: