.NET中的DataReader简介 (转)

.NET中的DataReader简介 (转)[@more@]

XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" /> 

 

摘要

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

 

目录

1. ADO.NET概览

2. DataReader的使用方法

3. 小结

 

1. ADO.NET概览

在说明主题之前,简单的介绍一下ADO.NET。ADO.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 Provider,SQL 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 Providers:SQLOLEDB - Microsoft OLE DB Provider for SQL Server ; MSDAora - Microsoft OLE DB Provider for ORACLE ; Microsoft.Jet.OLEDB.4.0 - OLE DB Provider for Microsoft Jet。System.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个主要的对象:Connection、Command、DataReader、DataAdapter。

 

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 Class和OleDbDataReader 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为主的数据访问关系可以用下图表示

ASPectratio="t">

UPLOADpicture/20021298544865039.jpg" align=baseline border=0>

 

在创建了一个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批,从而检索多个记录集,此时调用DataReader的NextResult方法读取下一个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.SqlReader的SQL批执行的检索结果

 

3. 小结

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

 

 

 


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-976171/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-976171/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值