《VB数据库编程模式.doc》由会员分享,可在线阅读,更多相关《VB数据库编程模式.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、185/14VBVB 数据库编程数据库编程9 94 41 1 ODBCODBC 概述概述在传统的数据库管理系统中,每个数据库管理系统都有自己的应用程序开发接口(API),应用程序使用数据库系统所提供的专用开发工具(如嵌入式 SQL 语言)进行开发,这样的应用程序只能运行在特定的数据库系统环境下,适应性和可移植性比较差。在用户硬件平台或操作系统发生变化时,应用程序需要重新编写。嵌入式 SQL 语言的另一个缺点是它只能存取某种特定的数据库系统,因此一个应用程序只能连接同类的 DBMS,而无法同时访问多个不同的 DBMS,而在实际应用中通常是需要同时访问多个不同的 DBMS 的。例如,在一个单位中,
2、财务、生产和技术等部门常根据自身专业的特点选择不同的 DBMS,而建立企业级管理信息系统时,需要同时访问各个部门的数据库。这种情况下传统的数据库应用程序开发方法就难以实现。为了解决这些问题,微软公司开发了 ODBC(Open DataBase Connectivity,即开放数据库互连)。ODBC 是 Microsoft 公司开发的一套开放数据库系统应用程序接口规范,目前它已成为一种工业标准,它提供了统一的数据库应用编程接口(API),为应用程序提供了一套高层调用接口规范和基于动态连接库的运行支持环境。使用 ODBC 开发数据库应用时,应用程序调用的是标准的 ODBC 函数和 SQL 语句,数
3、据库底层操作由各个数据库的驱动程序完成。因此应用程序有很好的适应性和可移植性,并且具备了同时访问多种数据库管理系统的能力,从而彻底克服了传统数据库应用程序的缺陷。9 94 42 2 ODBCODBC 体系结构体系结构ODBC 驱动程序类似于 Windows 下的打印驱动程序,对用户来说,驱动程序屏蔽了不同对象(数据库系统或打印机)间的差异。同样地,ODBC 屏蔽了 DBMS 之间的差异。ODBC 的体系结构如图 9.12 所示。1ODBC 数据库应用程序应用程序的主要任务包括:建立与数据源的连接;向数据源发送 SQL 请求;接收并处理请求的结果;断开与数据源的连接等。ODBC 数据库应用程序
4、驱动程序管理器 SQL Server 驱动程序 Oracle 驱动程序 Foxpro 驱动程序 Sybase 驱动程序 DB2 驱动程序 SQL Server 数据源 Oracle 数据源 Foxpro 数据源 Sybase 数据源 DB2 数据源 DB DB DB DB DB 图 9.12 ODBC 的体系结构2驱动程序管理器驱动程序管理器是一个 Windows 下的应用程序,在 Windows 95 和 Windows NT 环境下的控制面板上分别显示为“32 位ODBC”图标和“ODBC”图标。如果在 Windows 95 和 Windows NT 环境下没有这个图标,说明没有安装 OD
5、BC 驱动程序管理器。此软件可从 Windows 95 操作系统、Microsoft VC+、Microsoft VB 等软件中获得。此管理器的主要作用是用来装载 ODBC 驱186/14动程序、管理数据源、检查 ODBC 参数的合法性等。3DBMS 驱动程序ODBC 应用程序不能直接存取数据库,它将所要执行的操作提交给数据库驱动程序,通过驱动程序实现对数据源的各种操作,数据库操作结果也通过驱动程序返回给应用程序。4数据源数据源是指任一种可以通过 ODBC 连接的数据库管理系统,它包括要访问的数据库和数据库的运行平台。数据源名掩盖了数据库服务器或数据库文件间的差别,通过定义多个数据源,每个数据
6、源指向一个服务器名,就可在应用程序中实现同时访问多个 DBMS 的目的。数据源(Data Source Name,简称 DSN)是驱动程序与 DBS 连接的桥梁,数据源不是 DBS,而是用于表达一个 ODBC 驱动程序和 DBMS 特殊连接的命名。在连接中,用数据源名来代表用户名、服务器名、所连接的数据库名等,可以将数据源名看成是与一个具体数据库建立的连接。数据源分为以下三类:(1)用户数据源:用户创建的数据源,称为“用户数据源”。此时只有创建者才能使用,并且只能在所定义的机器上运行。任何用户都不能使用其他用户创建的用户数据源。(2)系统数据源:所有用户和在 Windows NT 下以服务方式
7、运行的应用程序均可使用系统数据源。(3)文件数据源:文件数据源是 ODBC 3.0 以上版本增加的一种数据源,可用于企业用户,ODBC 驱动程序也安装在用户的计算机上。总之,ODBC 提供了在不同数据库环境中为 CS 结构的客户机访问异构数据库的接口,也就是在由异构数据库服务器构成的客户机服务器结构中,要实现对不同数据库进行的数据访问,就需要一个能连接不同的客户机平台到不同服务器的桥梁,ODBC 就是起这种连接作用的桥梁。ODBC 提供了一个开放的、标准的能访问从 PC 机、小型机到大型机数据库数据的接口。使用 ODBC 标准接口的应用程序,开发者可以不必深入了解要访问的数据库系统,比如其支持
8、的操作和数据类型等信息,而只需掌握通用的 ODBC API 编程方法即可。使用 ODBC 的另一个好处是当作为数据库源的数据库服务器上的数据库管理系统升级或转换到不同的数据库管理系统时,客户机端应用程序不需作任何改变,因此利用 ODBC 开发的数据库应用程序具有很好的移植性。9 95 5ADOADO 数据控件9 95 51 1 ADOADO 对象模型对象模型ADO(ActiveX Data Object)数据访问接口是 Microsoft 处理数据库信息的最新技术。它是一种 ActiveX 对象,采用了被称为 OLE DB 的数据访问模式,是数据访问对象 DAO、远程数据对象 RDO 和开放数
9、据库互连 ODBC 三种方式的扩展。ADO 对象模型定义了个可编程的分层对象集合,主要由三个对象成员 Connection、Command 和 Recordset 对象,以与几个集合对象Errors、Parameters 和 Fields 等所组成。图 9.13 示意了这些对象之间的关系。表 9.6 是对这些对象的分工描述。Connection对Command 对象Recordset 对象Error 集合Error 对象Parameter 集合Parameter 对象187/14图 9.13ADO 对象模型表 9.6 ADO 对象描述对象名描述Connection连接数据来源Command从数
10、据源获取所需数据的命令信息Recordset所获得的一组记录组成的记录集Error在访问数据时,由数据源所返回的错误信息Parameter与命令对象有关的参数Field包含了记录集中某个字段的信息要想在程序中使用 ADO 对象,必须先为当前工程引用 ADO 的对象库。引用方式是执行“工程”菜单的“引用”命令,启动引用对话框,在清单中选取“MicrosoftActiveXDataObjects 2.0 Library”选项。9 95 52 2 使用使用 ADOADO 数据控件数据控件在使用 ADO 数据控件前,必须先通过“工程|部件”菜单命令选择Microsoft ADO Data Contro
11、l6.0(OLEDB)”选项,将 ADO 数据控件添加到工具箱。ADO 数据控件与 VisualBasic 的内部 Data 控件很相似,它允许使用 ADO 数据控件的基本属性快速地创建与数据库的连接。1ADO 数据控件的基本属性(1)ConnectionString 属性ADO 控件没有 DatabaseName 属性,它使用 ConnectionString 属性与数据库建立连接。该属性包含了用于与数据源建立连接的相关信息,ConnectionString 属性带有 4 个参数,如表 9.7 所示。(2)RecordSource 属性RecordSource 确定具体可访问的数据,这些数据
12、构成记录集对象 Recordset。该属性值可以是数据库中的单个表名,一个存储查询,也可以是使用 SQL 查询语言的一个查询字符串。表 9.7 ConnectionString 属性参数参数描述Provide指定数据源的名称FileName指定数据源所对应的文件名RemoteProvide在远程数据服务器打开一个客户端时所用的数据源名称RemoteServer在远程数据服务器打开一个主机端时所用的数据源名称(3)ConnectionTimeout 属性用于数据连接的超时设置,若在指定时间内连接不成功显示超时信息。(4)MaxRecords 属性定义从一个查询中最多能返回的记录数。2.ADO 数
13、据控件的方法和事件ADO 数据控件的方法和事件与 Data 控件的方法和事件完全一样。3设置 ADO 数据控件的属性下面通过使用 ADO 数据控件连接 Student.mdb 数据库来说明 ADO 数据控件属性的设置。Field 集合Field 对象188/14步骤 1:在窗体上放置 ADO 数据控件,控件名采用默认名“Adodcl”。步骤 2:单击 ADO 控件属性窗口中的 ConnectionString 属性右边的“”按钮,弹出“属性页”对话框。在该对话框中允许通过三种不同的方式连接数据源:“使用连接字符串”只需要单击“生成”按钮,通过选项设置自动产生连接字符串。“使用 Data Lin
14、k 文件”表示通过个连接文件来完成。“使用 ODBC 数据资源名称”可以通过下拉式列表框,选择某个创建好的数据源名称(DSN),作为数据来源对远程数据库进行控制。步骤 3:采用“使用连接字符串”方式连接数据源。单击“生成”按钮,打开“数据链接属性”对话框。在“提供者”选项卡内选择一个合适的 OLE DB 数据源,Student.mdb 是 Access 数据库,选择“Microsoft Jet 3.51 OLE DB Provider”选项。然后单击“下步”按钮或打开“连接”选项卡,在对话框内指定数据库文件,这里为 Student.mdb。为保证连接有效,可单击“连接”选项卡右下方的“测试连接
15、”按钮,如果测试成功则关闭 ConnectionString 属性页。步骤 4:单击 ADO 控件属性窗口中的 RecordSource 属性右边的“”按钮,弹出记录源属性页对话框。在“命令类型”下拉式列表框中选择“2adCmdTable”选项,在“表或存储过程名称”下拉式列表框中选择Student.mdb 数据库中的“基本情况”表,关闭记录源属性页。此时,已完成了 ADO 数据控件的连接工作。由于 ADO 数据控件是一个 ActiveX 控件,也可以用鼠标右键单击 ADO 数据控件,在弹出的快捷菜单中选择“ADODC 属性”菜单命令,打开 ADO 数据控件属性页对话框,一次完成步骤 1步骤
16、4 的全部设置。9 95 53 3ADOADO 数据控件上新增绑定控件的使用数据控件上新增绑定控件的使用随着 ADO 对象模型的引入,Visual Basic 6.0 除了保留以往的一些绑定控件外,又提供了一些新的成员来连接不同数据类型的数据。这些新成员主要有 DataGrid、DataCombo、DataList、DataReport、MSHFlexGrid、MSChart 控件和 MonthView等控件。这些新增绑定控件必须使用 ADO 数据控件进行绑定。Visual Basic 6.0 在绑定控件上不仅对 DataSource 和 DataField 属性在连接功能上作了改进,又增加了
17、 DataMember 与DataFormat 属性使数据访问的队列更加完整。DataMember 属性允许处理多个数据集,DataFormat 属性用于指定数据内容的显示格式。例 9.6使用 ADO 数据控件和 DataGrid 数据网格控件浏览数据库 Student.mdb,并使之具有编辑功能。在窗体上放置 ADO 数据控件,并按前面介绍的 ADO 数据控件属性设置过程连接数据库 Student.mdb 中的基本情况表。DataGrid 控件允许用户同时浏览或修改多个记录的数据。在使用 DataGrid 控件前也必须先通过“工程|部件”菜单命令选择“MicrosoftDataGridCon
18、trol 6.0(OLEDB)”选项,将 DataGrid 控件添加到工具箱,再将 DataGrid 控件放置到窗体上。设置 DataGrid 网格控件的 DataSource 属性为 Adodc1,就可将 DataGrid1 绑定到数据控件 Adodc1 上。显示在 DataGrid 网格内的记录集,可以通过 DataGrid 控件的 AllowAddNew、AllowDelete 和 AllowUpdate 属性设置控制增,删、改操作。如果要改变 DataGrid 网格上显示的字段,可用鼠标右键单击 DataGrid 控件,在弹出的快捷菜单中选择“检索字段”选项。Visual Basic
19、提示是否替换现有的网格布局,单击“是”按钮就可将表中的字段装载到 DataGrid 控件中。再次用鼠标右键单击 DataGrid 控件,在弹出的快捷菜单中选择“编辑”选项,进入数据网格字段布局的编辑状态,此时,当鼠标指在字段名上时,鼠标指针变成黑色向下箭头。用鼠标右键单击需要修改的字段名,在弹出的快捷菜单中选择“删除”选项,就可从 DataGrid 控件中删除该字段,也可选择“属性”选项修改字段的显示宽度或字段标题。图 9.14 所示为具有增、删、改功能的数据网格绑定。标有号的记录行表示允许增加新记录。189/14图 9.14具有增、删、改功能的数据网格绑定9 95 54 4 使用数据窗体向导
20、使用数据窗体向导Visual Basic 6.0 提供了一个功能强大的数据窗体向导,通过几个交互过程,便能创建前面介绍的 ADO 数据控件和绑定控件,构成个访问数据的窗口。数据窗体向导属于外接程序,在使用前必须从 Visual Basic 6.0 集成开发环境的横向菜单中点击“外接程序”,再点击子菜单的“外接程序管理器”,从打开的“外接程序管理器”窗口选择“VB 6 数据窗体向导”命令,将数据窗体装入到“外接程序”中。这里以 Student.mdb 数据库的基本情况表作为数据源来说明数据访问窗口建立的过程。例 9.7使用数据窗体向导建立 Student.mdb 数据库的数据访问对话框。步骤 1
21、:执行“外接程序”菜单中的“数据窗体向导”命令,进入“数据窗体向导-介绍”对话框,可以利用先前建立的数据窗体信息配置文件创建外观相似的数据访问窗体,选择“无”将不使用现有的配置文件。步骤 2:单击“下步”按钮,进入“数据窗体向导-数据库类型”对话框,可以选择任何版本的 Access 数据库或任何ODBC 兼容的用于远程访问的数据库。本例中选择 Access 数据库。步骤 3:在“数据窗体向导数据库”对话框内选择具体的数据库文件。本例为 Student.mdb 数据库。步骤 4:在“数据窗体向导Form”对话框内设置应用窗体的工作特性。其中,在“窗体名称为”文本框输入将要创建的窗体名;“窗体布局
22、”指定窗口内显示数据的类型,可以按单条记录形式显示,也可以按数据网格形式同时显示多条记录;绑定类型用于选择连接数据来源的方式,可以使用 ADODC 数据控件访问数据,也可以使用 ADO 对象程序代码访问数据。本例窗体名为 frmqk,选“单个记录”形式,使用“ADO 数据控件”访问数据。步骤 5:在“数据窗体向导-记录源”对话框内选择所需要的数据。其中,“记录源”下拉式列表框用于选择数据库中的表单,本例选择“基本情况”表;窗口中间的 4 个箭头按钮用于选定字段,“列排序按”下拉式列表框用于选择排序依据。步骤 6:在“数据窗体向导-控件选择”对话框内,选择所创建的数据访问窗体需要提供哪些操作按钮
23、。步骤 7:进入“数据窗体向导已完成”对话框,可以将整个操作过程保存到一个向导配置文件.rwp 中。单击“完成”按钮结束数据窗体向导的交互,此时向导将自动产生数据访问对话框的画面与代码。可以对产生的窗体布局形式进行调整或在此基础上加上其他控件对象。图 9.15 为调整照片位置的数据访问对话框运行结果。各按钮的程序代码不难理解,请读者自己阅读。190/14图 9.15数据窗体向导创建的数据访问对话框图 9.16 为窗体布局(步骤 4)选定网格(数据表)形式的数据访问窗口运行结果。图 9.17 所示为窗体布局选定主表细表形式,以基本情况表作为主表,学生成绩表为细表所建立的数据访问窗口。图 9.18
24、 为窗体布局(步骤 4)选定 MSHFlexGrid 数据网格形式的数据访问窗口运行结果。图 9.16选定网格(数据表)形式图 9.18选定 MSHFlexGrid 数据网格图 9.17选定主表细表形式9 96 6 VBVB 中中 SQLSQL 的实现的实现191/14SQL 中使用 SELECT 语句实现查询,SELECT 语句基本上是数据库记录集的定义语句。Data 控件的 RecordSource 属性不定是数据表名,可以是数据表中的某些行或多个数据表中的数据组合。可以直接在 Data 控件的 RecordSource 属性栏中输入SQL,也可在代码中通过 SQL 语句将选择的记录集赋给
25、数据控件的 RecordSource 属性,也可赋予对象变量。例 9.8将例 9.5 中的查找功能改用 SQL 语句处理,显示某专业的学生记录。使用 SQL 语句查询只要将例 9.5 中命令按钮 Command5_Click 事件写为如下代码:Private Sub Command5_Click()Dim mzy As Stringmzy=InputBox$(请输入专业,查找窗)Data1.RecordSource=Select*From 基本情况 Where 专业=&mzy&Data1.RefreshIf Data1.Recordset.EOF ThenMsgBox 无此专业!,提示Data
26、1.RecordSource=基本情况Data1.RefreshEnd IfEnd Sub程序中“Select*”选择表中所有字段(也可以指定选择部分列);“From 基本情况”短语指定数据来源;“Where 专业=&mzy&”短语构成查询条件,用于过滤表中的记录;Data1.Refresh 方法激活这些变化。此时,若Data1.Recordset.EOF 为 True,表示记录过滤后无数据,重新打开原来的基本情况表。注意:代码中的两处 Refresh 语句不能合用为一句,这是因为在执行了 Select 命令后,必须激活这些变化,然后才能判断记录集内有无数据。也可用 SQL 语句实现模糊查询,
27、命令按钮 Command5_Click 事件改为如下代码:Private Sub Command5_Click()Dim mzy As Stringmzy=InputBox$(请输入专业,查找窗)Data1.RecordSource=Select*From 基本情况 Where 专业 like*&mzy&*Data1.RefreshIf Data1.Recordset.EOF ThenMsgBox 无此专业!,提示Data1.RecordSource=基本情况Data1.RefreshEnd IfEnd Sub例 9.9用 SQL 语句从 Student.mdb 数据库的两个数据表中选择数据构
28、成记录集,并通过数据控件浏览记录集。在窗体上放置与例 9.2 类似的控件,如图 9.20 所示。Data 控件的 DatabaseName 属性指定数据库 Student.mdb,RecordSource 属性空缺,各文本框的 DataSource=Data1,DataField 属性分别设置为学号、XX、课程、成绩,而照片字段绑定图形框。本例要求从基本情况中选择学生的学号、XX、照片,从学生成绩表中选择该学生的课程和成绩来构成记录集,可在 Form_Load 事件中使用 SQL 语句,通过“Where 学生成绩表.学号=基本情况.学号”短语实现两表之间的连接,用 Select 命令从学生成绩
29、表中选择课程、成绩字段,从基本情况表中选择学号、XX 和照片字段构成记录集:Private Sub Form_Load()Data1.RecordSource=Select 基本情况.学号,基本情况.XX,基本情况.照片,学生成绩表.课程,学生成绩表.成绩From 学生成绩表,基本情况 Where 学生成绩表.学号=基本情况.学号End Sub当窗体启动后,数据显示如图 9.19 所示,数据控件上的箭头按钮可改变记录位置。如果要求显示的记录按一定的顺序192/14排列,可使用 ORDER BY 子句。图 9.19数据显示注意:当 FROM 子句列出多个表时,它们出现的顺序并不重要。Select
30、 短语中字段的排列决定了所产生的记录集内每一列数据的排列顺序。为了提高可读性可以重新排序表中的字段。例 9.10 用 SQL 指令按专业统计 Student.mdb 数据库中各专业的人数,要求按图 9.20 所示形式输出。在窗体上放置一个 Data 控件和一个网格控件 MSFlexGrid1。Data1 的 DatabaseName 属性指定数据库 Student.mdb,网格控件的 DataSource=Data1。图 9.20 通过数据控件浏览记录集为了统计各专业的人数,需要对基本情况表内的记录按专业分组。“Group By 专业”可将同一专业的记录合并成一条新记录。要记录统计结果,需要构
31、造一个输出字段,此时可使用 SQL 的统计函数 Count()作为输出字段,它按专业分组创建摘要值。若希望按用户要求的标题显示统计摘要值,可用 As 短语命名一个别名。“按专业统计人数”按钮的指令代码为:Private Sub Command1_Click()Data1.RecordSource=select 专业,count(*)as 人数 from 基本情况 group by 专业Data1.RefreshEnd Sub运行结果如图 9.21。193/14图 9.21 使用 SQL 的统计函数有时,我们只要返回一定数量的记录,如获取平均成绩最好的前 5 名,则“按平均成绩统计前 5 名”按
32、钮的指令代码为:Private Sub Command2_Click()Data1.RecordSource=select top 5 学号,avg(成绩)as 平均成绩 from学生成绩表 group by 学号 order by avg(成绩)descData1.RefreshEnd Sub这里,“Group by 学号”短语将同一学生的各门课程的记录合并成一条记录,由 Avg(成绩)计算出该学生的平均成绩,“Order By Avg(成绩)Desc”短语按平均成绩的降序排列数据,“Top 5”短语返回最前面的 5 条记录。如果不包括 ORDER BY子句,查询将从学生成绩表中返回随机的
33、5 条记录。“恢复原表内容”按钮的指令代码为:Private Sub Command3_Click()Data1.RecordSource=基本情况Data1.RefreshEnd Sub以上介绍的是在 Data 控件上使用 SQL,如果要在 ADO 数据控件上使用 SQL 语句,最好通过代码配合 ADO 数据控件完成数据库的连接,这可给程序带来更大的灵活性。例 9.11我们将例 9.9 中的 Data 控件改用 ADO 数据控件,用 SQL 语句从 Student.mdb 数据库的两个数据表中选择数据构成记录集。将 Data 控件改用 ADO 数据控件 Adodc1,各文本框的 Dataso
34、urce=Adodc1,DataField 属性分别设置为学号、XX、课程、成绩,而字段照片绑定图形框。ADO 数据控件的 ConnectionString 属性设置为与数据源连接的相关信息,通过操作完成与 student.mdb 的数据连接(此时,可查看到 ConnectionString 属性的内容);DataSource 指定连接的数据库文件名,如图 9.22。194/14图 9.22使用 ADO 数据控件即 DataSource 属性使用 SQL 语句:select学生成绩表.*,基本情况.XX,基本情况.照片 from 学生成绩表,基本情况 where 学生成绩表.学号=基本情况.学
35、号程序执行后将产生与图 9.22 所示一样的效果。例 9.12设计一个窗体,计算 Student.mdb 数据库内学生成绩表中每个学生的平均成绩,产生 XX、平均成绩和最低成绩三项数据,按平均成绩降序排列数据,并用该数据作图。学生成绩表中没有平均成绩和最低成绩这两项数据,可以在 SELECT 子句内使用统计函数 AVG()和 Min()产生,“GroupBy 学号”可将同一学生的记录合并成一条新记录。学生成绩表中没有 XX 字段,故需要通过条件“基本情况.学号=学生成绩表.学号”从基本情况表取得。然后,将产生的记录集连接到 ADO 数据控件上。要显示作图数据,可在窗体上放置一个网格控件(选择工
36、程部件中 Microsoft Data Grid Control 6.0(OLEDB)),设置网格的 DataSource=Adodcl,将其绑定到 ADO 数据控件上。此例将 Adodc1 控件的 Visible 属性设为 False,故在图 9.22中看不到 Adodc1 控件。要绘制图表,可使用绑定控件 MsChart。MsChart 控件也是一个 Active X 控件,需要通过“工程部件”菜单命令,将MsChart 控件添加到工具箱中。要将作图数据传送到 Mschart 控件,只需要设置 MsChart1.DataSource=Adodc1。如果只要选择部分数据作图,可以将作图数据存
37、入到数组,再设置 MsChart1.Data=数组名即可。将 Adodcl 的 RecordSource 属性设置为 SQL 语句,代码如下:”select基本情况.XX,avg(成绩)as 平均成绩,min(成绩)as 最低成绩 from 学生成绩表,基本情况 where 学生成绩表.学号=基本情况.学号 group by 学生成绩表.学号,基本情况.XX order by avg(成绩)desc”程序执行后将产生图 9.23 所示的效果。195/14图 9.23 显示作图数据9 97 7VBVB 中使用中使用 ODBCODBC在 VB 环境开发数据库应用时,与数据库连接和对数据库的数据操作
38、是通过 ODBC、Microsoft Jet(数据库引擎)等实现的。Microsoft Jet 主要用于本地数据库,而在 CS 结构的应用中一般用 ODBC。例 9.13使用 ADO 数据控件,设计一个简单窗体,用来扫描 student.mdb 数据库的基本情况表。窗体中几个约束数据文本框绑定到连接表中当前记录的 ADO 数据控件。这个项目不需编程,步骤如下:步骤 1:开始新项目,并在项目工具箱中加进 ADO 数据控件。步骤 2:在窗体上放一个 ADO 数据控件的实例。步骤 3:右键单击控件,并从弹出菜单中选择“ADODC 属性”命令(或单击 Adodc1 的 ConnectionString
39、 属性旁的“”按钮),打开 ADO 数据控件的属性页。步骤 4:选择“通用”标签,并选择“使用 ODBC 数据资源名称”单选项。步骤 5:现在要指定数据源(ADO 数据控件联系的数据库)。可以看出,可以指定多种数据库,但应用程序用一样的方法处理。不管实际提供表格的数据库为何种形式,它用一样的语句访问表格与其记录。数据源名就是系统知道的数据库名。数据源名只要生成一次,此后任何应用程序都可以使用。如果系统上没有数据源名,则按下列步骤生成新的数据源名:1.单击“新建”按钮,打开“创建新数据源”窗口。在这个窗口中可以选择数据源类型,选项包括:文件数据源所有用户均可以访问的数据库文件。用户数据源只有你能
40、访问的数据库文件。系统数据源能登录该机器的任何用户都能访问的数据库文件。2选择“系统数据源”,以便从网上登录测试锁定机制(如果在网络环境中)。3单击“下一步”按钮显示“创建新数据源”窗口,指定访问数据库所用的驱动程序。驱动程序必须符合数据库。可以看出,数据源可以是个大数据库,包括 Access、Oracle、SQL Server。本例采用 Access数据库。4选择 Microsoft Access Driver,并单击“下一步”按钮。新窗口指出,已选择了系统数据源并用 Access 驱动程序访问。196/145单击“完成”按钮,生成数据源。这时就可以指定将哪个 Access 数据库赋予新建的
41、数据源。在出现的“ODBC Microsoft Access 安装”窗口中,执行如下操作步骤:6在第一个框中,指定数据源名 mystudent,在“描述”框中,输入简短说明:student 数据源(说明可以空缺)。7单击“选择”按钮,并通过“选定数据库”窗口选择数据库,找到 VB98 文件夹中的 student.mdb(假设 student.mdb存放在此)。8回到 ADO 数据控件的属性页时,新的数据源即会出现在“使用 ODBC 数据资源名称”下拉清单中。步骤 6:展开下拉清单,并选择 mystudent 数据源。实际上,这就指定了要使用的数据库(类似于设计 Data 控件的 Databas
42、eName 属性)。下一个任务是,选择 ADO 数据控件能看到的数据库记录(表格或 SQL 语句返回的记录集)。步骤 7:切换到“记录源”标签(或单击 Adodc1 的 RecordSource 属性旁的“”按钮)。步骤 8:在“命令类型”下拉清单中,选择 adCmdTable 项目,这是记录源的类型。步骤 9:在“表或存储过程名称”下拉的清单中出现数据库中的所有表名。选择基本情况表。Adodc1 控件的 RecordSource 属性栏中出现 student.mdb 数据库的基本情况表。步骤 10:将四个文本框控件和四个标题控件放在窗体上。将它们的 DataSource=Adodc1,Dat
43、aField 分别设置为学号、XX、专业、出生年月。Mystudent 数据源已经注册到系统上,不必再次生成。它会自动出现在 ADO 数据控件属性页的“使用 ODBC 数据资源名称”下拉清单中。运行结果如图 9.24。图 9.24使用 ADO 数据控件与 ODBC例 9.14ADO 数据控件使用自己的高级约束数据控件,即 DataList 和 DataCombo 控件。本例要求在 DataList 控件中显示学号,要将 DataList 控件与 ADO 数据控件连接,使用户每次选择清单中的新学号,窗体上的文本框中出现相应的字段。要使用 DataList 和 DataCombo 控件,首先要将其
44、加进工具箱。步骤如下:1选择“工程|部件”菜单,打开“部件”对话框,选取“Microsoft DataList Controls 6.0(OLEDB)”复选项。2将 DataList 控件的实例放在窗体上。3要用基本情况表中的学号建立 DataList 控件,设置属性 RowSource=Adodc1,ListField=学号。如果这时运行应用程序,则会自动生成 DataList 控件,但清单中所选的学号对约束数据控件没有影响。我们要加入一些代码,在清单中每次选择另一学号时,移动 ADO 数据控件,具体方法如下:Private Sub DataList1_Click()Adodc1.Recor
45、dset.Bookmark=DataList1.SelectedItemEnd Sub每次单击清单中的新项目时,这个项目就成为 ADO 数据控件的书签。大多数情况下,用于自动建立 DataList 控件的数据通常没有排序。如果 DataList 控件中学号没有排序,就无法方便地找到清单中的项目。要使 DataList 控件中学号排序,按如下步骤修改 ADO 数据控件的 RecordSource 属性:1.设计图 9.25 所示的窗体。2.右键单击 Adodc1 控件,并在属性页中将“ODBC 数据源名”设置为 mystudent。197/143切换到“记录源”标签,指定 SQL 语图 9.25
46、Adodc1 控件句而不是表格:将“命令类型”设置为adCmdUnknown,并在“命令文本”框中输人下列 SQL 语句:select*from 基本情况order by 学号例 9.15用外接程序的数据窗体向导创建主细表(数据库 student.mdb 中的主表是基本情况表,细表是学生成绩表)。步骤 1:选择“外接程序”的“数据窗体向导”菜单(如菜单中无此选项,可通过“外接程序”的“外接程序管理器”加载“VB 6 数据窗体向导”),出现“数据窗体向导介绍”窗口,选择“无”,单击下一步;步骤 2:在“数据窗体向导数据库类型”窗口“选择 Remote(ODBC)”,单击下一步;步骤 3:在“数据
47、窗体向导连接信息”窗口,在 DSN(数据源名)栏选择已定义的数据源 mystudent,单击下一步;步骤 4:在“数据窗体向导Form”窗口,在“窗体名称为”文本框中输入窗体名称,本例输入 frm_qk;窗体布局选择“主表/细表”,单击下一步;步骤 5:在“数据窗体向导主表记录源”窗口选择主表与其字段,本例在“记录源”文本框选择主表为“基本情况”,在“可用字段”中挑选字段学号、XX、专业到“选定字段”,单击下一步;步骤 6:在“数据窗体向导详细资料记录源”窗口选择细表与其字段,本例在“记录源”文本框选择细表为“学生成绩表”,在“可用字段”中挑选字段学号、课程、成绩到“选定字段”,单击下一步;步
48、骤 7:在“数据窗体向导记录源关系”窗口,选择主表与其细表相连接的字段,本例在“主表”和“细表”下拉列表框中均选择“学号”,单击下一步;步骤 8:在“数据窗体向导控件选择”窗口选择需要的控件,单击下一步;步骤 9:单击“完成”按钮。运行程序结果如图 9.26 所示。图 9.26 用外接程序的数据窗体向导创建主细表习题与思考题9.1 选择题1要利用数据控件返回数据库中记录集,则需设置_属性。(A)Connect(B)DatabaseName(C)RecordSource(D)RecordType2Seek 方法可在_记录集中进行查找。(A)Table 类型(B)Snapshot 类型(C)Dyn
49、aset 类型(D)以上三者3下列_组关键字是 Select 语句中不可缺少的。(A)Select、From(B)Select、Where(C)From、Order By(D)Select、All4在使用 Delete 方法删除当前记录后,记录指针位于_。(A)被删除记录上(B)被删除记录的上一条(B)(C)被删除记录下一条(D)记录集的第一条5使用 ADO 数据控件的 ConnectionString 属性与数据源建立连接相关信息,在属性页对话框中可以有_种不同的连接方式。198/14(A)(B)(C)(D)6数据绑定列表框 DBList 和下拉式列表框 DBCombo 控件中的列表数据通过
50、属性_从数据库中获得。(A)DataSource 和 DataField(B)RowSource 和 ListField(C)BoundColumn 和 BoundText(D)DataSource 和 ListField7DBList 控件和 DBCombo 控件与数据库的绑定通过属性_实现。(B)DataSource 和 DataField(B)RowSource 和 ListField(C)BoundColumn 和 BoundText(D)DataSource 和 ListField8下列所显示的字符串中,字符串_不包含在 ADO 数据控件的 ConnectionString 属性中。