宝典之使用ADO.NET DataReader检索数据

开发 后端
这里就如何使用ADO.NET DataReader检索数据做出了详细的介绍,文章还有相应的代码,希望对大家有帮助。

ADO.NET经过长时间的发展,很多用户都很了解ADO.NET了,这里我发表一下个人理解,和大家讨论讨论。使用ADO.NET DataReader检索数据包括创建Command对象的实例,然后通过调用Command.ExecuteReader创建一个DataReader,以便从数据源检索行。下面的示例演示如何使用ADO.NET DataReader检索数据,其中reader表示有效的DataReader,而command表示有效的Command对象。

  1. reader=command.ExecuteReader(); 

#T#使用DataReader对象的Read方法可从查询结果中获取行。通过向DataReader传递列的名称或序号引用,可以访问返回行的每一列。不过,为了实现***性能,DataReader提供了一系列方法,将使您能够访问其本机数据类型(GetDateTime、GetDouble、GetGuid、GetInt32等)的列值。有关数据提供程序特定的DataReaders的类型化访问器方法列表,请参见OleDbDataReader和SqlDataReader。假定基础数据类型为已知,如果使用类型化访问器方法,将减少在检索列值时所需的类型转换量。

.NETFramework的WindowsServer2003版包含DataReader的附加属性HasRows,该属性使您能够在读取DataReader之前就可确定它是否返回了任何结果。以下代码示例循环访问一个DataReader对象,并从每个行中返回两个列。

  1. PrivateSubHasRows(ByValconnectionAsSqlConnection)  
  2. Usingconnection  
  3. DimcommandAsSqlCommand=NewSqlCommand(_  
  4. "SELECTCategoryID,CategoryNameFROMCategories;",_  
  5. connection)  
  6. connection.Open()  
  7.  
  8. DimreaderAsSqlDataReader=command.ExecuteReader()  
  9.  
  10. Ifreader.HasRowsThen  
  11. DoWhilereader.Read()  
  12. Console.WriteLine(reader.GetInt32(0)_  
  13. &vbTab&reader.GetString(1))  
  14. Loop  
  15. Else  
  16. Console.WriteLine("Norowsfound.")  
  17. EndIf  
  18.  
  19. reader.Close()  
  20. EndUsing  
  21. EndSub  

DataReader提供未缓冲的数据流,该数据流使过程逻辑可以有效地按顺序处理从数据源中返回的结果。由于数据不在内存中缓存,所以在ADO.NET DataReader检索数据过大时,DataReader是一种适合的选择。关闭DataReader。每次使用完DataReader对象后都应调用Close方法。如果Command包含输出参数或返回值,那么在DataReader关闭之前,将无法访问这些输出参数或返回值。

请注意,当DataReader打开时,该DataReader将以独占方式使用Connection。在原始DataReader关闭之前,将无法对Connection执行任何命令(包括创建另一个DataReader)。不要在类的Finalize方法中对Connection、DataReader或任何其他托管对象调用Close或Dispose。在终结器中,仅释放类直接拥有的非托管资源。如果类不拥有任何非托管资源,则不要在类定义中包含Finalize方法。

责任编辑:田树 来源: 博客
相关推荐

2009-11-04 12:45:33

ADO.NET Dat

2009-10-29 11:08:20

ADO.NET Dat

2009-10-29 08:51:24

ADO.NET结构

2009-11-12 15:47:14

ADO.NET更新数据

2009-11-04 15:11:42

ADO.NET连接模式

2009-12-28 15:05:56

ADO.NET 数据

2009-11-13 10:53:54

ADO.NET Dat

2009-12-29 15:44:11

ADO.NET检索技术

2010-01-04 15:27:31

ADO.NET SQL

2009-11-12 10:06:01

ADO.NET读取数据

2009-11-04 09:25:35

ADO.NET _Co

2009-12-28 15:11:36

ADO.NET专家

2009-12-31 10:57:14

ADO.NET SEL

2009-11-12 13:26:56

使用ADO.NET参数

2009-11-13 10:42:09

ADO.NET Nex

2009-11-13 14:38:45

ADO.NET Dat

2009-11-13 14:22:11

ADO.NET Dat

2009-12-25 10:25:59

2009-11-13 10:10:07

2009-12-31 09:18:23

ADO.NET对象模型
点赞
收藏

51CTO技术栈公众号