• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

画情画心画影

--寒冬玉
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

把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;  
  }  
 

posted on 2008-12-19 12:44  Winter001  阅读(262)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3