日期:2014-05-18  浏览次数:20448 次

关于DataReader转为DataTable的两种方法,区别,都可以吗?
-------------------第一种------------------------------------------

public static DataTable ConvertdrTodt(SqlDataReader dr) 
  {
  DataTable dt = new DataTable();
  for (int i = 0; i < dr.FieldCount;i++ )//分析数据列,以此来构造dt结构
  {
  DataColumn mydc = new DataColumn();//对象化DataTable中的列
  mydc.DataType = dr.GetFieldType(i);//获取DataReader中列的数据类型
  mydc.ColumnName = dr.GetName(); //获取DataReader中列的名称
  dt.Columns.Add(mydc); //将新建的列mydc加入到DaTable中(即列集合)
  }
  while (dr.Read())
  {
  DataRow mydrow = dt.NewRow(); //以上面建立好dt结构来对象化一行新的数据行
  for (int i = 0; i < dr.FieldCount; i++)
  {
  mydrow[i] = dr[i].ToString; //把DataReder的每行数据填入Table中的每行row
  }
  dt.Rows.Add(mydrow); //所有row组成一个Table(即row的集合)
  mydrow = null;
  }
  dr.Close();
  return dt;
  }

-------------------第二种------------------------------------------

  SqlDataReader dr = DataPublicVar.sqlcmd.ExecuteReader();
  DataTable dt = new DataTable();
  dt.Load(dr); //直接Load??
  DataPublicVar.sqlcn.Close();
  dr.Close();
  return dt;

第二种直接load也可以??
我试过的确可以过。
那不是很方便??
为什么大家不用第二中方法呢?

谢谢解答

------解决方案--------------------
探讨
为什么大家不用第二中方法呢?

------解决方案--------------------
效率没有比较过,第二种代码简洁,用的多。