将DataReader 转为 DataTable

/// <summary>
    /// 将DataReader 转为 DataTable
    /// </summary>
    /// <param name="DataReader">OleDbDataReader</param>
    protected DataTable ConvertDataReaderToDataTable(OleDbDataReader reader)
    {
        DataTable objDataTable = new DataTable("TmpDataTable");
        try
        {
            int intFieldCount = reader.FieldCount;//获取当前行中的列数;
            for (int intCounter = 0; intCounter <= intFieldCount - 1; intCounter++)
            {
                objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));
            }
            //populate   datatable  
            objDataTable.BeginLoadData();
            //object[]   objValues   =   new   object[intFieldCount   -1];  
            object[] objValues = new object[intFieldCount];
            while (reader.Read())
            {
                reader.GetValues(objValues);
                objDataTable.LoadDataRow(objValues, true);
            }
            reader.Close();
            objDataTable.EndLoadData();
            return objDataTable;
        }
        catch (Exception ex)
        {
            throw new Exception("转换出错出错!", ex);
        }
    }
posted @ 2010-08-15 17:50  瑞君  Views(214)  Comments(0Edit  收藏  举报