本文共 4918 字,大约阅读时间需要 16 分钟。
:namespace prefix = o ns = "urn:schemas--com::office" />
摘要
本文介绍了中的一个重要的DataReader,简单的举例说明了DataReader的使用方法。
目录
1. ADO.NET概览
2. DataReader的使用方法
3. 小结
1. ADO.NET概览
在说明主题之前,简单的介绍一下ADO.NET。ADO.NET有两个核心:DataSet和.NET data provr,.NET data provider被用来连接,命令以及检索数据集。
.NET 包括 Data Provider(面向Microsoft SQL Server 7.0及以后版本)和OLE .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 ; MSDA- Microsoft OLE DB Provider for ; 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
[]
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类用来建立数据库连接。
如果Provider是SQL Server的话就可以使用如下代码
[Visual Basic]
Dim adoConn As SqlConnection = New SqlConnection("Data =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");
否则Provider是OLE 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为主的数据访问关系可以用下图表示
ectratio="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 = " 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)))
L
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/