当前位置:编程学习 > C#/ASP.NET >>

使用 ADO.NET 解锁 Microsoft Access 数据(2)

答案:使用 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 和 OleDbDataRea

上一个:一份礼物: 自动填充SqlCommand.Parameters的类(1)
下一个:使用C#语言操作ADO数据库

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,