.NET中的DataReader简介

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

 

 

摘要

本文介绍了ADO.NET中的一个重要的对象DataReader,简单的举例说明了DataReader的使用方法。

 

目录

1. ADO.NET概览

2. DataReader的使用方法

3. 小结

 

1. ADO.NET概览

在说明主题之前,简单的介绍一下ADO.NETADO.NET有两个核心组件:DataSet.NET data provider.NET data provider被用来连接数据库,执行SQL命令以及检索数据集。

.NET Framework包括SQL Server .NET Data Provider(面向Microsoft SQL Server 7.0及以后版本)和OLE DB .NET Data ProviderSQL Server .NET Data Provider在连接和处理SQL Server数据库时是最高效的,因为它使用了特别针对SQL Server的协议和优化处理,在System.Data.Sqlclient名称空间中包含了所有的SQL Server .NET Data Provider OLE DB .NET Data Provider用来支持OLE DB接口。ADO.NET可以提供以下OLE DB ProvidersSQLOLEDB - Microsoft OLE DB Provider for SQL Server MSDAORA - Microsoft OLE DB Provider for Oracle Microsoft.Jet.OLEDB.4.0 - OLE DB Provider for Microsoft JetSystem.Data.Oledbclient名称空间包含了所有的OLE DB .NET Data Provider 。因此在程序中要包含你想要的Data Provider的名称空间。

 

使用SQL Server .NET Data Provider时引入的代码:

[Visual Basic]
Imports System.Data.SqlClient
[C#]
using System.Data.SqlClient;

使用OLE DB .NET Data Provider时引入的代码:

[Visual Basic]
Imports System.Data.OleDb
[C#]
using System.Data.OleDb;

 

.NET data provider包含4个主要的对象:ConnectionCommandDataReaderDataAdapter

 

Connection类用来建立数据库连接。

如果ProviderSQL Server的话就可以使用如下代码

[Visual Basic]

Dim adoConn As SqlConnection = New SqlConnection("Data source=DBServer;initial catalog=Northwind;persist security info=True;user id=sa")

[C#]

SqlConnection adoConn = new SqlConnection("Data source=DBServer;initial catalog=Northwind;persist security info=True;user id=sa");

否则ProviderOLE DB的话就可以使用如下代码

[Visual Basic]

Dim adoConn As OleDbConnection = New OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind")

[C#]

OleDbConnection adoConn = new OleDbConnection("Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind ");

 

Command类用来执行SQL命令或存储过程。

 

DataReader类用来从数据库检索一种只读的且指针只能前移的数据流根据.NET Data Provider的不同,DataReader分为SqlDataReader ClassOleDbDataReader Class两种。

SqlDataReader

[Visual Basic]

Dim sqlMyReader As SqlDataReader = cmdMyCommand.ExecuteReader()

[C#]

SqlDataReader sqlMyReader = cmdMyCommand.ExecuteReader();

OleDbDataReader

[Visual Basic]

Dim oleMyReader As OleDbDataReader = cmdMyCommand.ExecuteReader()

[C#]

OleDbDataReader oleMyReader = cmdMyCommand.ExecuteReader();

 

DataAdapter类用来填充Dataset和更新数据源

 

2. DataReader的使用方法

DataReader是我要着重描述的部分,因为使用DataReader可以提高应用程序的性能,是将数据输出到表示层重要的手段。以DataReader为主的数据访问关系可以用下图表示

 

在创建了一个Command对象之后,通过调用Command.ExecuteReader方法再创建DataReader对象,就能够使用Read方法从数据源检索记录集了。最后,需要着重指出的是在使用完DataReader后应该显式的关闭DataReader对象。下面的代码是使用SqlDataReader的样例,从罗思文数据库中进行简单数据查询。

Imports System

Imports System.Data

Imports System.Data.SqlClient

Imports Microsoft.VisualBasic

 

Public Class DataReaderSample

 

    Public Shared Sub Main()

        Dim sqlConn As SqlConnection = New SqlConnection("data source=DBServer;initial catalog=Northwind;persist security info=True;user id=sa")

 

        Dim sqlCmd As SqlCommand = sqlConn.CreateCommand()

        sqlCmd.CommandText = "SELECT EmployeeID, LastName , FirstName FROM Employees"

 

        sqlConn.Open()

 

        Dim sqlReader As SqlDataReader = sqlCmd.ExecuteReader()

        Dim intFor As Int32

        For intFor = 0 To sqlReader.FieldCount - 1

            Console.Write(String.Format("{0,-20:G}", sqlReader.GetName(intFor)))

        Next

 

        Console.WriteLine()

 

        Do While sqlReader.Read()

            Console.WriteLine(String.Format("{0,-20:G}{1,-20:G}{2,-20:G}", sqlReader.GetInt32(0), sqlReader.GetString(1), sqlReader.GetString(2)))

        Loop

 

        sqlReader.Close()

        sqlConn.Close()

        Console.Read()

    End Sub

End Class

图表1.SqlReader执行的检索结果

 

同样的也可以让Command对象执行SQL批,从而检索多个记录集,此时调用DataReaderNextResult方法读取下一个SQL批产生的数据。

Imports System

Imports System.Data

Imports System.Data.SqlClient

Imports Microsoft.VisualBasic

 

Public Class DataReaderSample

 

    Public Shared Sub Main()

        Dim sqlConn As SqlConnection = New SqlConnection("data source= DBServer;initial catalog=Northwind;persist security info=True;user id=sa")

 

        Dim sqlCmd As SqlCommand = sqlConn.CreateCommand()

        sqlCmd.CommandText = "SELECT EmployeeID, LastName , FirstName  FROM Employees;SELECT CategoryID, CategoryName, Description FROM Categories"

 

        sqlConn.Open()

 

        Dim sqlReader As SqlDataReader = sqlCmd.ExecuteReader()

        Dim intFor As Int32

        Dim blnNextResult As Boolean = False

 

        Do While Not blnNextResult

            For intFor = 0 To sqlReader.FieldCount - 1

                Console.Write(String.Format("{0,-20:G}", sqlReader.GetName(intFor)))

            Next

 

            Console.WriteLine()

 

            Do While sqlReader.Read()

                Console.WriteLine(String.Format("{0,-20:G}{1,-20:G}{2,-20:G}", sqlReader.GetInt32(0), sqlReader.GetString(1), sqlReader.GetString(2)))

            Loop

 

            Console.WriteLine()

 

            blnNextResult = Not sqlReader.NextResult()

        Loop

 

        sqlReader.Close()

        sqlConn.Close()

        Console.Read()

    End Sub

End Class

图表2.SqlReaderSQL批执行的检索结果

 

3. 小结

这篇文字是面向初学者的,我想通过阅读它,让喜爱.NET的入门人士都会对ADO.NET和其中的DataReader有个大致的了解,并成功的编写出.NET代码。

 

 

 

C#中OLEDB数据库操作详解与实践 本文还有配套的精品资源,点击获取 简介:本教程详述了如何使用OLEDB接口在C#中进行数据库操作,涵盖连接、SQL命令执行和结果读取等核心概念。包括使用 OleDbConnection 建立数据源连接、 OleDbCommand 执行数据库命令以及 OleDbDataReader 获取查询结果。同时,强调了参数化查询的重要性以避免S... 阅读详情

相关推荐

如何设置OleDbDataReader关闭连接

如何设置OleDbDataReader关闭连接 编程小实例,C++.net源代码编写

DataReader和DataAdapter的区别

DataReader是一个向前的指针,本身并不包含数据,调用一次Read()方法它就向前到下一条记录,一个DataReader必须单独占用一个打开的数据库连接!在使用 OleDbDataReader 时,关联的 OleDbConnection 正忙于为 OleDbDataReader 服务,对leDbConnection 无法执行任何其他操作。除非调用 OleDbDataRe...

weixin_34310785的博客 622

C# OleDbDataReader快速数据读取方式(3种)

主要介绍了C# OleDbDataReader快速数据读取方式(3种),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

ado.net详细研究

最近阅读了wrox的高效掌握 ADO.NET,有所感触,希望与大家分享。第一次写文章,不好请谅解。 第一篇:ADO.NET的概念 ADO.NET中间包含以下常见类: · Connection · Command · DataAdapter · DataReader · DataSet 1 Connection类 数据库Connection类提供与数据库的连接。.net里面有OleDbConnect

zhfkhx的专栏 1098

OleDbDataReader数据读取器

如果只想读取数据(而不更新数据),则不必将它存储在数据集内。相反,可以直接从数据库读出数据并读入应用程序这时可以使用数据读取器来操作,可以使代码简单化。 如果程序需要通过查询结果执行连续的只读传递,则可以使用数据读取器对象来代替填充数据集。数据读取器对象从数据源获取数据,并将这些数据直接传递给应用程序。通常,数据读取器对象用于当不需要在数据集内缓存数据时对数据进行只读、只能向前的访问。(数据适配...

weixin_33895657的博客 291

ADO.Net SqlDataReader

ADO.Net的类用于从SQL Server数据库读取数据。它从SQL Server数据库读取仅前面行的数据流中的数据。它是封闭的类,所以不能被继承。它继承了类并实现了接口。C#ConnectionDepthFieldCountHasRowsIsClosedClose()DateTimeDecimalDataTableRead()要创建一个实例,则必须调用SqlCommand对象的方法。

unber的博客 769

ADO.NET中的DataReader的使用总结

对学习.net的人来说ADO.NET应当是不陌生了,不过我在这里还是想总结一下关于DataReader的使用DataReader包括了两种形式:SqlDataReaderOleDbDataReader,其中很多的用法和属性都是相通的。首先DataReader从数据库当中检索只读,只进的数据流,它也存储在客户端的网络缓冲区当中。且它在内存当中只是存储一行,开销小,速度快。它返回的只是一条记录,我们

feng2375的专栏 1235

ADO.NET中的DataReaderDataSet

先看一下视频中讲的这章的框架:        在这里重点讲述一下DataReaderDataSet。      一,DataReader:     1,简单介绍:DataReader对象是一个简单的数据集,用于从数据源中检索只读数据集,常用于检索大量数据。DataReader对象只允许以只读、顺向的方式查看其中所存储的数据,提供一个非常有效率的数据查看模式,同时DataRead

学会改变自己——才能突破 7165

Ado.NetDataReader详细研究

Ado.Net详细研究(DataReader) Ado.NetDataReader详细研究如何高效掌握 ADO.NET?下边的文章将与大家分享作者的Ado.Net详细研究。第一篇:ADO.NET的概念ADO.NET中间包含以下常见类: · Connection · Command · DataAdapter · DataReader · DataSet1 Connection类数据库Connec

编程之家 987

ADO.NET DataReader对象简介

ADO.NET DataReader对象简介 作者: zyf0808 发表日期: 2006-03-30 08:43 文章属性: 原创 复制链接 DataReader 对象 如果我们利用Command 对象所执行的命令是有传回数据的Select 叙述,此时Command 对象 会自动产生一个DataReader 对象。DataReader 是我们...

weixin_33720452的博客 89

net DataReader

ADO.NET有两种对象可以通过连接把数据引入--DataReader 类和DataSet类。 4.1处理和显示数据 不管ASP.NET 页面的大小和复杂性如何,只要是通过ADO.NET来使用数据的页面都具备3段基本的代码: *用于创建到数据源的连接的代码。 *用于从数据源读取、写入数据源以及修改数据的代码 *在用ASP.NET生成的页面上显示数据的代码。 简单说来,可以在下面这种情况下使用Dat

大巧不工 723

.NET中的DataReader简介 (转)

.NET中的DataReader简介 (转)[@more@]XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" /> 摘...

cuiji1279的博客 222

ADO.NET DataReader使用技巧搜集总结

经常上网收集资料,自己看多了也能总结出一些东西,在这里究一些使用ADO.NET DataReader 获得最佳性能的技巧来说谁,同时还回答了一些关于使用ADO.NET DataReader的常见问题。 ◆在访问相关 Command 的任何输出参数之前,必须关闭 DataReader。 ◆完成读数据之后总是要关闭 DataReader。如果使用 Connection 只是用于返回 DataR

darkread的专栏 879

理解ASP.NETDataReader(c#)

   什么是DataReader?ADO.NET DataReader对象可以从数据库中检索只读、只进的数据流。因为每次在内存中的数据只有一行,所以使用DataReader可提高应用程序的性能并减少系统开销。它还提供了未缓冲的数据流,该数据流使过程逻辑可以有效地按顺序处理从数据源中返回的结果。由于数据不在内存中缓存,所以在检索大量数据时,DataReader是一种合适的选择。  ADO.NET

feng2375的专栏 8555
上一篇: ADO记录集和水晶报表
下一篇: 在VB.NET中寻找App
40Star
博客等级 码龄25年 1粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值