中国站长下载-为中国站长提供最好最全的建站资源! 首 页发布资源有事留言繁體中文
设为首页
加入收藏
联系我们
 
您当前的位置:中国站长下载 -> 文章中心 -> 数据库区 -> ACCESS -> 文章内容  虚拟主机 域名注册 退出登录 用户管理
栏目导航
· ACCESS · MSSQL
· Mysql · DB2
· ORACLE · SYBASE
· 其他相关
热门文章
· sndvol32 - sndvol3...
· [组图] FLASH:《大话李白》...
· 个人网站到底能赚多...
· [图文] Rundll.exe是病毒吗...
· [组图] Flash:制作MV
· 价值12万元的网站SE...
· 网站创业者,你需要...
· 一个成功的网站设计...
· [图文] FLASH:韩国导航条解...
· 中国网站的赚钱模式...
相关文章
· 如何使用 ASP.NET查...
· [图文] 使用 ASP.NET 语法创...
· ASP.NET2.0中用Grid...
· ASP.NET应用中缓存O...
· 用ASP.NET加密Cooki...
· [图文] ASP.NET中利用SQLXM...
· 使用ASP.NET Atlas ...
· 用Repeater控件显示...
· [图文] 使用 ASP.NET Atlas...
· 为ASP.NET应用缓存O...
使用 ADO.NET 解锁 Microsoft Access 数据(2)
作者:Paul Cornell  来源:MSDN  发布时间:2006-5-9 16:14:35  发布人:chinazhan

 减小字体 增大字体

使用 DataReader 对象以仅向前移动的、只读的格式访问数据
很多时候,您只是希望简单地浏览数据,而并不需要在数据间来回浏览,也不需要更改数据(我们将此称为“流水数据”)。ADO.NET 的 DataReader 对象是专门为此设计的。下面是我编写的一段示例代码,可以逐个读取连接的中的所有选定数据:

' Visual Basic .NET 代码。
' 控制台应用程序。
' 引用:
' System
' System.Data
' System.XML

Imports System.Data.OleDb ' 用于 OleDb 对象。
Imports Microsoft.VisualBasic.ControlChars ' 用于 CrLf 常量。

Module Module1

Sub Main()

' 创建并初始化 OleDbConnection、OleDbCommand
' 和 OleDbDataReader 对象。
Dim objConn As New _
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"User ID=Admin;" & _
"Data Source=C:\Program Files\Microsoft" & _
"Office\Office10\Samples\Northwind.mdb")

objConn.Open()

' 执行命令并将数据读取器附加到
' 所选数据。
Dim objCmd As New OleDbCommand("SELECT * FROM Products", _
objConn)
Dim objReader As OleDbDataReader = objCmd.ExecuteReader

' 读取数据并列出值。
Call ReadData(objReader)

End Sub

Public Sub ReadData(ByVal objReader As OleDbDataReader)

' 目的:列出给定数据读取器的数据值。
' 接受:objReader - 数据读取器。

Dim intField As Integer ' 行中的当前字段。
Dim intColumn As Integer ' 当前列的名称。
Dim blnColumns As Boolean = False ' 列名称是否已
' 列出。

With objReader

' 一次读取一行,直至文件末尾。
Do While .Read = True

For intField = 0 To .FieldCount - 1

' 首先列出列名称。
If blnColumns = False Then

For intColumn = 0 To .FieldCount - 1

If intColumn = .FieldCount - 1 Then
Console.Write(.GetName(intColumn) & _
CrLf)
Else
Console.Write(.GetName(intColumn) & _
", ")
End If

Next intColumn

' 只列出一次列名称。
blnColumns = True

End If

' 列出当前行中每个字段的值。
If intField = .FieldCount - 1 Then
Console.Write(.Item(intField) & CrLf)
Else
Console.Write(.Item(intField) & ", ")
End If

Next intField

Loop

End With

' 暂停,以便用户在控制台窗口中查看数据。
Console.Write("按任意键继续...")
Console.Read()

End Sub

End Module

下面是该代码的工作方式:

正如前面的代码示例所示,Imports 代码(例如,Imports System.Data.OleDb)有助于减少访问对象或对象的成员时所需的工作量。类似地,对 OleDbConnection、OleDbCommand 和 OleDbDataReader 对象进行声明和初始化,以分别代表连接、数据记录和记录游标。此代码的真正核心是 ReadData 子例程。
Do 循环使用 OleDbDataReader 对象的 Read 方法一次读取一行数据,直到该方法返回 False(表示已没有其他数据可读取)。
OleDbDataReader 对象的 FieldCount 属性返回数据行中数据字段(列)的数目。如果是第一行数据,则在列上调用 OleDbDataReader 对象的 GetName 属性,以返回列的名称。
OleDbDataReader 对象的 Item 属性与 FieldCount 属性结合,使用一个索引编号返回数据行中每个数据字段的值。
使用 DataAdapter、DataSet、DataTable、DataRow 和 DataColumn 对象处理数据集
ADO.NET 的 DataSet 对象是为断开连接的数据而设计的。您可以在一个数据集中模拟整个的结构和数据,包括表、行、列、字段,甚至关系。处理完数据后,可以使数据集中的数据与原始中的数据同步。下面是我编写的一段示例代码,可以逐个读取断开连接的数据集中的所有数据。

' Visual Basic .NET 代码。
' 控制台应用程序。
' 引用:
' System
' System.Data
' System.XML

Imports System.Data.OleDb ' 用于 OleDb 对象。
Imports Microsoft.VisualBasic.ControlChars ' 用于 CrLf 常量。

Module Module1

Sub Main()

' 创建并初始化 OleDbDataAdapter 和 DataSet 对象。
Dim objAdapter As New OleDbDataAdapter _
("SELECT * FROM Products", _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"User ID=Admin;" & _
"Data Source=C:\Program Files\Microsoft" & _
"Office\Office10\Samples\Northwind.mdb")
Dim objDataSet As New DataSet()

' 将所选数据复制到数据集。
objAdapter.Fill(objDataSet)

' 列出数据集中的数据值。
Call ListData(objDataSet)

End Sub

Public Sub ListData(ByVal objDataSet As DataSet)

' 目的:列出给定数据集的数据值。
' 接受:objDataSet - 数据集。

Dim objTable As DataTable
Dim intRow, intColumn As Integer

' 数据集中可能包含有多个表。
For Each objTable In objDataSet.Tables

With objTable

Console.Write("表" & _
.TableName "中的数据" & ":" & CrLf)

' 首先列出列名称。
For intColumn = 0 To .Columns.Count - 1

If intColumn = .Columns.Count - 1 Then
Console.Write(.Columns(intColumn).ColumnName _
& CrLf)
Else
Console.Write(.Columns(intColumn).ColumnName _
& ", ")
End If

Next intColumn

' 按行列出数据...
For intRow = 0 To .Rows.Count - 1

' ...然后按字段列出每行中的数据。
For intColumn = 0 To _
.Rows(intRow).ItemArray.Length - 1

If intColumn = _
.Rows(intRow).ItemArray.Length - 1 Then
Console.Write(.Rows(intRow). _
ItemArray(intColumn) _
& CrLf)
Else
Console.Write(.Rows(intRow). _
ItemArray(intColumn) & ", ")
End If

Next intColumn

Next intRow

End With

Next objTable

' 暂停,以便用户在控制台窗口中查看数据。
Console.Write("按任意键继续...")
Console.Read()

End Sub

End Module

下面是该代码的工作方式:

同样,Imports 代码(例如,Imports System.Data.OleDb)有助于减少访问对象或对象的成员时所需的工作量。类似地,对 OleDbDataAdapter 和 DataSet 对象进行声明和初始化,分别代表与数据集之间的适配器以及数据集。OleDbAdapter 对象的 FillData 方法将中的数据复制到数据集。此代码的核心是 ListData 子例程。
通过使用 DataSet 对象的 Tables 属性,最外层的 For...Each 循环将遍历数据集中的每个表,并将每个表作为 DataTable 对象返回。
DataTable 对象的 Columns 属性返回一个 DataColumnCollection,代表表中的所有列。通过结合使用 Columns 属性和一个索引编号(即结合 DataColumnCollection 集合的 Count 属性,如代码中所示),将返回一个 DataColumn 对象。DataColumn 对象的 ColumnName 属性返回列的名称。
同样,DataTable 对象的 Rows 属性返回一个 DataRowCollection,代表表中的所有行。通过结合使用 Rows 属性和一个索引编号(即结合 DataRowCollection 集合的 Count 属性,如代码中所示),将返回一个 DataRow 对象。DataRow 对象的 ItemArray 属性返回一个 Object 类型的数组,代表数据行中的每个值。通过结合使用 ItemArray 属性和一个索引编号(即结合 DataColumnCollection 集合的 Count 属性,如代码中所示),将返回单个数据字段值。
更多信息
有关 ADO.NET 的更多信息,请参阅以下内容:

ADO.NET(英文,链接列表)
ADO.NET for the ADO Programmer(英文,技术文章)
Accessing Data with ADO.NET(英文,链接列表)
Views and Filters(英文,技术文章)
Data Relations and Relatives(英文,技术文章)
--转自微软中国  

 
[] [返回上一页] [打 印] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
中国站长下载
中国站长下载

本页只接受PR>=4 IT类站点连接,申请连接,谢谢您们的支持!希望我们的下载站能够真正帮到中国的站长们!
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图
Copyright © 2005-2006 ChinaZhan.Net. All Rights Reserved .