转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
使用 ADO.NET 解锁 Microsoft Access 数据         ★★★★

使用 ADO.NET 解锁 Microsoft Access 数据

作者:闵涛 文章来源:闵涛的学习笔记 点击数:2270 更新时间:2009/4/23 10:48:13

下面的示例介绍如何在 Windows 窗体中添加数据网格,并绑定到前一示例中生成的现有数据集:

  1. Designer(设计器)视图中,单击工具栏上的 Windows Forms(Windows 窗体)选项卡,然后双击 DataGrid
  2. 在 DataGrid1 的 Properties(属性)窗口中,为 DataSource 属性选择 DataSet11,然后为 DataMember 属性选择表。
  3. 运行应用程序。
  4. 如果 DataGrid1 中未显示数据,请在 Form_Load 事件中添加类似如下的代码:Me.OleDbDataAdapter1.Fill(DataSetName11)
    提示:要在 Server Explorer(服务器资源管理器)窗口中没有现有数据连接的情况下创建 ADO.NET 对象,请执行以下步骤:
    1. 在设计视图中,单击工具栏上的 Data(数据)选项卡。请注意,这在 Code(代码)视图中无效。
    2. 将 ADO.NET 对象拖动到设计界面上。
    3. 右击 ADO.NET 对象,并单击 Properties(属性)。
    4. 填写所选 ADO.NET 对象的相应属性。

数据库项目

Visual Studio .NET 数据库项目允许您快速创建面向数据库的解决方案。下面的示例介绍如何在 Visual Studio .NET 中创建数据库项目:

  1. File(文件)菜单上,指向 New(新建),然后单击 Project(项目)。
  2. Project Types(项目类型)窗格中,展开 Other Projects(其他项目),然后单击 Database Projects(数据库项目)。
  3. Templates(模板)窗格中,单击 Database Project(数据库项目)。
  4. 填写 Name(名称)和 Location(位置)框,然后单击 OK(确定)。
  5. 单击 Add to Solution(添加到解决方案)按钮将此项目添加到现有解决方案;或单击 Close Solution(关闭解决方案)按钮,创建独立的解决方案。
  6. Add Database Reference(添加数据库引用)对话框中,选择现有的数据连接,或单击 Add New Reference(添加新引用),以添加新的数据连接。如果单击 Add New Reference(添加新引用),请执行上一节中的步骤完成 Data Link Properties(数据链接属性)对话框。如果使用此方法添加新的数据连接,数据连接将显示在 Server Explorer(服务器资源管理器)窗口中。

数据表单向导

Visual Studio .NET 数据表单向导允许您快速连接到数据库,并生成简单的用户界面,用于显示数据并与数据进行交互。要使用数据表单向导,请执行以下步骤:

  1. 在 Windows 应用程序项目中,在 Project(项目)菜单上,单击 Add Windows Form(添加 Windows 窗体)。
  2. Templates(模板)窗格中,单击 Data Form Wizard(数据窗体向导),单击 Open(打开),然后单击 Next(下一步)。
  3. Create a new dataset named(创建新数据集)框中,键入 DataSet1,然后单击 Next(下一步)。
  4. 选择现有的数据连接或创建新数据连接,然后单击 Next(下一步)。
  5. 选择要向 DataSet1 填充的项,然后单击 Next(下一步)。
  6. 如果选择多项,请定义各项之间的关系,然后单击 Next(下一步)。
  7. 定义要在表单中显示的表和列,然后单击 Next(下一步)。
  8. 选择显示样式选项,然后单击 Finish(完成)。
    注意:请确保将新数据表单设置为启动表单,方法如下:在 Project(项目)菜单中,单击 Properties(属性)。展开 Common Properties(通用属性)文件夹,单击 General(常规),在 Startup object(启动对象)列表中选择该数据表单,然后单击 OK(确定)。
    注意:请确保将 DataSet1 中的数据绑定到数据表单,这可以通过向数据表单的 Load 事件插入以下代码来实现:Me.OleDbDataAdapter1.Fill(objDataSet1)
  9. 运行应用程序:在 Debug(调试)菜单上,单击 Run(运行)。

扩展的 ADO.NET 代码示例

为了向您演示更多的 ADO.NET 代码,在本月专栏的最后,我将介绍几个在 ADO.NET 中创建的扩展的代码示例。

使用 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)有助于减少访问对象或对象的成员时所需的工作量。类似地,对 OleDbConnectionOleDbCommandOleDbDataReader 对象进行声明和初始化,以分别代表数据库连接、数据记录和记录游标。此代码的真正核心是 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

上一页  [1] [2] [3]  下一页


[C语言系列]使用C#实现ADSL自动拨号  [Web开发]狂人采集器规则使用详解
[电脑技术]windows7快捷键使用大全  [办公软件]PowerPoint模板使用经验之谈
[办公软件]如何在PowerPoint中使用(插入)Media Player控件播…  [办公软件]如何在PowerPoint中使用(插入、创建)书签及书签的…
[办公软件]如何在PowerPoint中插入(使用)条形码  [办公软件]如何在PowerPoint中制作模板并使用模板
[办公软件]使用PowerPoint制作电子相册教程  [办公软件]可以使用PowerPoint来测试液晶显示器质量
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台