宝典之使用ADO.NETDataReader检索数据

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

成都创新互联成立于2013年,我们提供高端重庆网站建设公司成都网站制作成都网站设计、网站定制、成都营销网站建设小程序制作、微信公众号开发、成都网站营销服务,提供专业营销思路、内容策划、视觉设计、程序开发来完成项目落地,为木包装箱企业提供源源不断的流量和订单咨询。

 
 
  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. DimreaderAsSqlDataReader=command.ExecuteReader()
  8. Ifreader.HasRowsThen
  9. DoWhilereader.Read()
  10. Console.WriteLine(reader.GetInt32(0)_
  11. &vbTab&reader.GetString(1))
  12. Loop
  13. Else
  14. Console.WriteLine("Norowsfound.")
  15. EndIf
  16. reader.Close()
  17. EndUsing
  18. EndSub

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

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

分享题目:宝典之使用ADO.NETDataReader检索数据
文章链接:http://www.hantingmc.com/qtweb/news38/246588.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联