首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

VS2005停 DataReader 转为 DataTable 遇到困难 解决即揭贴

2011-12-15 
VS2005下DataReader 转为 DataTable 遇到困难 解决即揭贴///定义DataTable和模式DataTabledatatablenewDa

VS2005下 DataReader 转为 DataTable 遇到困难 解决即揭贴
///定义DataTable和模式
        DataTable   datatable   =   new   DataTable();
        DataTable   schemaTable   =   dataReader.GetSchemaTable();

          try
            {///动态添加表的数据列
                  foreach   (DataRow   myRow   in   schemaTable.Rows)
                      {
                              DataColumn   myDataColumn   =   new   DataColumn();
                              myDataColumn.DataType   =   myRow.GetType();
                              myDataColumn.ColumnName   =   myRow[0].ToString();
                              datatable.Columns.Add(myDataColumn);
                        }

                    ///添加表的数据
                    while   (dataReader.Read())
                        {
                            DataRow   myDataRow   =   datatable.NewRow();
                            for   (int   i   =   0;   i   <   schemaTable.Rows.Count;   i++)
                              {
                                    myDataRow[i]   =   dataReader[i];
                                }
                            datatable.Rows.Add(myDataRow);
                            myDataRow   =   null;
                        }
          schemaTable   =   null;

        ///关闭数据读取器
              dataReader.Close();
              return   datatable;
      }
          catch   (Exception   ex)
                  {
                          ///抛出类型转换错误
                          SystemError.SystemLog(ex.Message);
                          throw   new   Exception(ex.Message,   ex);
                  }



在VS2005下,转化的时候出现错误:
"值类型与列类型不匹配不能在   ?   列中存储   <?> 。所需类型是   DataRow。 "
望解答,解决就揭贴,谢谢大家了


[解决办法]
http://community.csdn.net/Expert/topic/5535/5535462.xml?temp=.8925287

对于 ADO.NET 2.0 中的 DataSet 和 DataTable 类的另一个主要增强是,提供了用来消耗 DataReader(将数据加载到 DataTable 中)以及在 DataTable 的内容之上公开 DataReader 的机制。

有时,我们具有(或收到)DataReader 形式的数据,但实际上是希望具有缓存 DataTable 形式的数据。通过新增的 Load 方法,我们可以获得现有的 DataReader,并使用它的内容来填充 DataTable。

有时,我们具有(或收到)缓存形式的数据 (DataTable),并且需要通过 DataReader 类型接口来访问它。通过新增的 GetTableReader 方法,我们可以获得现有的 DataTable,并通过 DataReader 接口和语义来访问它。

在下面的部分中,我们将考察一下这些新方法。

Load 方法 — 基本用法

Load 方法是已经添加到 ADO.NET 2.0 的 DataSet 和 DataTable 中的一个新方法。它用 DataReader 对象的内容加载 DataTable。如果 DataReader 包含多个结果集,则它实际上可以一次加载多个表。

Load 方法的基本用法非常简单:

MyDataTable.Load (MyDataReader)


热点排行