`
didasoft
  • 浏览: 164723 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

将DataReader转换为DataTable的一个函数

阅读更多

有人问到这个,就参照DNN的实现,用C#写了一个。记录下来作为备忘。

 

 1        public static DataTable ConvertDataReaderToDataTable(IDataReader reader)
 2        {
 3            DataTable objDataTable = new DataTable();
 4            int intFieldCount = reader.FieldCount;
 5            for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)
 6            {
 7                objDataTable.Columns.Add(reader.GetName(intCounter), reader.GetFieldType(intCounter));
 8            }

 9
10            objDataTable.BeginLoadData();
11            
12            object[] objValues = new object[intFieldCount];
13            while (reader.Read())
14            {
15                reader.GetValues(objValues);
16                objDataTable.LoadDataRow(objValues, true);
17            }

18            reader.Close();
19            objDataTable.EndLoadData() ;
20 
21            return objDataTable;
22        }

23

如果需要的话,columns的详细列属性还可以设置,比如IsDbNull等等。reader还有一个GetSchemaTable的方法,可以获得详细的列属性。
分享到:
评论

相关推荐

    C#数据库连接和常用函数转换

    在C#中,我们通常使用ADO.NET框架来实现这一目标,它提供了DataSet、DataTable、DataAdapter、Connection、Command、DataReader等对象,用于执行SQL查询、读取数据、更新数据库等操作。例如,连接到Microsoft Access...

    c#数据库sqlserver连接公共类的实现

    我们可以创建一个方法来返回一个新的`SqlCommand`实例,设置其`CommandText`属性为SQL语句,并将其`Connection`属性设置为当前的`SqlConnection`。 ```csharp public SqlCommand CreateSqlCommand(string sql) {...

    OracleHelper

    5. **结果集处理**:为了方便处理查询结果,OracleHelper可能封装了将DataReader转换为DataTable或List对象的方法,使得开发者能更方便地操作数据。 6. **异常处理**:OracleHelper会包含适当的错误处理机制,捕获...

    .net&_1329_.doc 。NET面试题

    装箱就是隐式的将一个值型转换为引用型对象。拆箱就是将一个引用型对象转换成任意值型。 .NET中读写数据库需要用到的类 在.NET中,读写数据库需要用到以下几个类: 1、Connection类用于创建一个到数据库的连接。 ...

    ado.net复习课

    1. **DataSet**:这是一个离线数据存储,可以理解为内存中的数据库。它包含DataTable对象,可以用来存储从数据库获取的数据,并支持数据的CRUD(创建、读取、更新、删除)操作。在Windows Forms应用中,DataSet常被...

    asp.net DBHelper类的写法实例

    4. **数据读取与转换**:为了方便处理查询结果,DBHelper类通常会提供`GetDataTable()`或`GetDataSet()`方法,将查询结果转换为DataTable或DataSet对象。这些方法内部会调用`ExecuteReader()`,然后填充数据结构。 ...

    C# 各种helper类

    DataTable是.NET Framework中的一个类,用于存储和操作表格数据。DataTable Helper可以提供数据的填充、筛选、排序、转换等功能,简化与数据库交互的操作。 7. **DataReader Helper**: DataReader是.NET中用于从...

    通用SQL操作类,可用于大部分的数据库系统

    描述中提到的“大部分的操作函数”通常是指SQL语句的面向对象封装,这意味着存在一个C#类(Database.cs),该类包含了多种方法,以便在各种数据库系统中进行常见的SQL操作。这些方法可能包括但不限于连接、查询、...

    用友软件面试题

    - DataSet是一个内存中的数据缓存,可以包含多个DataTable,支持离线操作,但消耗更多资源。 7. **装箱与拆箱**:装箱是将值类型转换为引用类型的过程,拆箱则是相反的操作。这里的例子是将值类型(如int、struct...

    北大青鸟ADO.Net课堂档案

    填充数据集则需要 DataAdapter 的 Fill() 方法,该方法接收一个 DataSet 和可能的表名,将查询结果放入指定的 DataTable 中。在更新数据库时,DataAdapter 的 Update() 方法会根据之前设置的命令(InsertCommand、...

    C#.Net的常见面试试题及答案

    - **装箱和拆箱**(Boxing and Unboxing):装箱是指将值类型转换为引用类型的过程;拆箱则相反。 - **CTS**(Common Type System):公共类型系统定义了.NET Framework中类型系统的基础。 - **CLS**(Common ...

    很全面的asp.net c#面试题

    在C#中,中文字符虽然在内存中占用两个字节,但在计算字符串长度时,每个字符(包括中文字符)都计为一个单位。因此,即使中文字符在底层表示上占用的空间更大,但使用`string.Length`获取的长度依然是字符的数量,...

    C#基础类库

    主要功能:将整GridView的数据导出到Excel中关增加一个效果线做美化 14.分词辅助类 SegList C#SegList分词辅助类,帮助类 15.汉字转拼音 EcanConvertToCh C#将汉字转成拼音 PinYin 取汉字拼音的首字母,只要你输入...

    .net基础试题,初学者可以来看看

    7. 委托:委托在C#中类似于函数指针,可以将方法作为一个对象的引用传递,支持事件处理和回调机制。 8. 接口和类:接口定义一组方法签名,不包含实现,强制实现接口的类必须提供这些方法的实现。类则可以包含数据和...

    填充数据表

    - 在这段代码中,使用了`SqlDataAdapter`的`Fill`方法来填充一个`DataSet`对象,然后通过`DataSet.Tables[0]`获取第一个表的数据,存储到`DataTable`对象中。 #### 二、数据展示 1. **HTML表格生成**: - 使用`...

    C#笔试题目总结(本人收藏的)

    - **DataTable**:表示一个单独的数据表。 - **DataRow**:表示表中的一行数据。 - **DataColumn**:表示表中的一列。 - **DataRelation**:表示两个 DataTable 之间的关系。 - **Constraint**:定义表中的约束规则...

    基于.net的web数据库开发

    为了解决ADO.NET的复杂性,微软推出了Entity Framework,这是一个ORM(对象关系映射)工具,将数据库操作转换为面向对象的代码,使得开发更加直观和高效。 **7. LINQ to SQL** LINQ(Language Integrated Query)是...

    .Net面试题目整理

    - DataReader 是一个只进式的、单向的数据流,用于实时读取数据库数据,适合大数据量、低内存占用的场景。 - DataSet 是一个内存中的数据缓存,可以存储多表数据,支持数据操作和离线操作,适合小规模数据的处理。...

Global site tag (gtag.js) - Google Analytics