VB数据库编程模式_第1页
VB数据库编程模式_第2页
VB数据库编程模式_第3页
VB数据库编程模式_第4页
VB数据库编程模式_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VB数据库编程941 ODBC概述在传统的数据库管理系统中,每个数据库管理系统都有自己的应用程序开发接口(API),应用程序使用数据库系统所提供的专用开发工具(如嵌入式SQL语言)进行开发,这样的应用程序只能运行在特定的数据库系统环境下,适应性和可移植性比较差。在用户硬件平台或操作系统发生变化时,应用程序需要重新编写。嵌入式SQL语言的另一个缺点是它只能存取某种特定的数据库系统,因此一个应用程序只能连接同类的DBMS,而无法同时访问多个不同的DBMS,而在实际应用中通常是需要同时访问多个不同的DBMS的。例如,在一个单位中,财务、生产和技术等部门常根据自身专业的特点选择不同的DBMS,而建立企

2、业级管理信息系统时,需要同时访问各个部门的数据库。这种情况下传统的数据库应用程序开发方法就难以实现。为了解决这些问题,微软公司开发了ODBC(Open DataBase Connectivity,即开放数据库互连)。ODBC 是Microsoft公司开发的一套开放数据库系统应用程序接口规范,目前它已成为一种工业标准,它提供了统一的数据库应用编程接口(API),为应用程序提供了一套高层调用接口规范和基于动态连接库的运行支持环境。使用ODBC开发数据库应用时,应用程序调用的是标准的ODBC函数和SQL语句,数据库底层操作由各个数据库的驱动程序完成。因此应用程序有很好的适应性和可移植性,并且具备了同

3、时访问多种数据库管理系统的能力,从而彻底克服了传统数据库应用程序的缺陷。942 ODBC体系结构ODBC驱动程序类似于Windows下的打印驱动程序,对用户来说,驱动程序屏蔽了不同对象(数据库系统或打印机)间的差异。同样地,ODBC屏蔽了DBMS之间的差异。ODBC的体系结构如图9.12所示。1ODBC数据库应用程序应用程序的主要任务包括:建立与数据源的连接;向数据源发送SQL请求;接收并处理请求的结果;断开与数据源的连接等。图9.12 ODBC的体系结构2驱动程序管理器驱动程序管理器是一个Windows下的应用程序,在Windows 95和Windows NT环境下的控制面板上分别显示为“3

4、2位ODBC”图标和“ODBC”图标。如果在Windows 95和Windows NT环境下没有这个图标,说明没有安装ODBC驱动程序管理器。此软件可从Windows 95操作系统、Microsoft VC+、Microsoft VB等软件中获得。此管理器的主要作用是用来装载ODBC驱动程序、管理数据源、检查ODBC参数的合法性等。3DBMS驱动程序 ODBC应用程序不能直接存取数据库,它将所要执行的操作提交给数据库驱动程序,通过驱动程序实现对数据源的各种操作,数据库操作结果也通过驱动程序返回给应用程序。4数据源数据源是指任一种可以通过ODBC连接的数据库管理系统,它包括要访问的数据库和数据库

5、的运行平台。数据源名掩盖了数据库服务器或数据库文件间的差别,通过定义多个数据源,每个数据源指向一个服务器名,就可在应用程序中实现同时访问多个DBMS的目的。数据源(Data Source Name,简称DSN)是驱动程序与DBS连接的桥梁,数据源不是DBS,而是用于表达一个ODBC驱动程序和DBMS特殊连接的命名。在连接中,用数据源名来代表用户名、服务器名、所连接的数据库名等,可以将数据源名看成是与一个具体数据库建立的连接。数据源分为以下三类: (1)用户数据源:用户创建的数据源,称为“用户数据源”。此时只有创建者才能使用,并且只能在所定义的机器上运行。任何用户都不能使用其他用户创建的用户数据

6、源。 (2)系统数据源:所有用户和在Windows NT下以服务方式运行的应用程序均可使用系统数据源。(3)文件数据源:文件数据源是ODBC 3.0以上版本增加的一种数据源,可用于企业用户,ODBC驱动程序也安装在用户的计算机上。总之,ODBC提供了在不同数据库环境中为CS结构的客户机访问异构数据库的接口,也就是在由异构数据库服务器构成的客户机服务器结构中,要实现对不同数据库进行的数据访问,就需要一个能连接不同的客户机平台到不同服务器的桥梁,ODBC就是起这种连接作用的桥梁。ODBC提供了一个开放的、标准的能访问从PC机、小型机到大型机数据库数据的接口。使用ODBC标准接口的应用程序,开发者可

7、以不必深入了解要访问的数据库系统,比如其支持的操作和数据类型等信息,而只需掌握通用的ODBC API编程方法即可。使用ODBC的另一个好处是当作为数据库源的数据库服务器上的数据库管理系统升级或转换到不同的数据库管理系统时,客户机端应用程序不需作任何改变,因此利用ODBC开发的数据库应用程序具有很好的移植性。 95 ADO数据控件951 ADO对象模型 ADO(ActiveX Data Object)数据访问接口是Microsoft处理数据库信息的最新技术。它是一种ActiveX对象,采用了被称为OLE DB的数据访问模式,是数据访问对象DAO、远程数据对象RDO和开放数据库互连ODBC三种方式

8、的扩展。ADO对象模型定义了个可编程的分层对象集合,主要由三个对象成员Connection、Command和Recordset对象,以及几个集合对象Errors、Parameters和Fields等所组成。图9.13示意了这些对象之间的关系。表9.6是对这些对象的分工描述。Connection对象Error对象Error集合Command对象Parameter对象Parameter集合Recordset对象Field对象Field集合图9.13 ADO对象模型表9.6 ADO对象描述对象名描 述Connection连接数据来源Command从数据源获取所需数据的命令信息Recordset所获得

9、的一组记录组成的记录集Error在访问数据时,由数据源所返回的错误信息Parameter与命令对象有关的参数Field包含了记录集中某个字段的信息 要想在程序中使用ADO对象,必须先为当前工程引用ADO的对象库。引用方式是执行“工程”菜单的“引用”命令,启动引用对话框,在清单中选取“Microsoft ActiveX Data Objects 2.0 Library”选项。952 使用ADO数据控件 在使用ADO数据控件前,必须先通过“工程|部件”菜单命令选择Microsoft ADO Data Control 6.0(OLEDB)”选项,将ADO数据控件添加到工具箱。ADO数据控件与Visu

10、al Basic的内部Data控件很相似,它允许使用ADO数据控件的基本属性快速地创建与数据库的连接。1ADO数据控件的基本属性 (1)ConnectionString属性 ADO控件没有DatabaseName属性,它使用ConnectionString属性与数据库建立连接。该属性包含了用于与数据源建立连接的相关信息,ConnectionString属性带有4个参数,如表9.7所示。(2)RecordSource属性 RecordSource确定具体可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中的单个表名,一个存储查询,也可以是使用SQL查询语言的一个查询字符

11、串。表9.7 ConnectionString属性参数参数描述Provide指定数据源的名称FileName指定数据源所对应的文件名RemoteProvide在远程数据服务器打开一个客户端时所用的数据源名称RemoteServer在远程数据服务器打开一个主机端时所用的数据源名称 (3)ConnectionTimeout属性用于数据连接的超时设置,若在指定时间内连接不成功显示超时信息。(4)MaxRecords属性定义从一个查询中最多能返回的记录数。2. ADO数据控件的方法和事件ADO数据控件的方法和事件与Data控件的方法和事件完全一样。3设置ADO数据控件的属性 下面通过使用ADO数据控件

12、连接Student.mdb数据库来说明ADO数据控件属性的设置。 步骤1:在窗体上放置ADO数据控件,控件名采用默认名“Adodcl”。 步骤2:单击ADO控件属性窗口中的ConnectionString属性右边的“”按钮,弹出“属性页”对话框。在该对话框中允许通过三种不同的方式连接数据源: “使用连接字符串”只需要单击“生成”按钮,通过选项设置自动产生连接字符串。 “使用Data Link文件”表示通过个连接文件来完成。“使用ODBC数据资源名称”可以通过下拉式列表框,选择某个创建好的数据源名称(DSN),作为数据来源对远程数据库进行控制。步骤3:采用“使用连接字符串”方式连接数据源。单击“

13、生成”按钮,打开“数据链接属性”对话框。在“提供者”选项卡内选择一个合适的OLE DB数据源,Student.mdb是Access数据库,选择“Microsoft Jet 3.51 OLE DB Provider”选项。然后单击“下步”按钮或打开“连接”选项卡,在对话框内指定数据库文件,这里为Student.mdb。为保证连接有效,可单击“连接”选项卡右下方的“测试连接”按钮,如果测试成功则关闭ConnectionString属性页。 步骤4:单击ADO控件属性窗口中的RecordSource属性右边的“”按钮,弹出记录源属性页对话框。 在“命令类型”下拉式列表框中选择“2adCmdTable

14、”选项,在“表或存储过程名称”下拉式列表框中选择Student.mdb数据库中的“基本情况”表,关闭记录源属性页。此时,已完成了ADO数据控件的连接工作。由于ADO数据控件是一个ActiveX控件,也可以用鼠标右键单击ADO数据控件,在弹出的快捷菜单中选择“ADODC属性”菜单命令,打开ADO数据控件属性页对话框,一次完成步骤1步骤4的全部设置。953 ADO数据控件上新增绑定控件的使用 随着ADO对象模型的引入,Visual Basic 6.0除了保留以往的一些绑定控件外,又提供了一些新的成员来连接不同数据类型的数据。这些新成员主要有DataGrid、DataCombo、DataList、D

15、ataReport、MSHFlexGrid、MSChart控件和MonthView等控件。这些新增绑定控件必须使用ADO数据控件进行绑定。 Visual Basic 6.0在绑定控件上不仅对DataSource和DataField属性在连接功能上作了改进,又增加了DataMember与DataFormat属性使数据访问的队列更加完整。DataMember属性允许处理多个数据集,DataFormat属性用于指定数据内容的显示格式。 例9.6 使用ADO数据控件和DataGrid数据网格控件浏览数据库Student.mdb,并使之具有编辑功能。 在窗体上放置ADO数据控件,并按前面介绍的ADO数据

16、控件属性设置过程连接数据库Student.mdb中的基本情况表。 DataGrid控件允许用户同时浏览或修改多个记录的数据。在使用DataGrid控件前也必须先通过“工程|部件”菜单命令选择“Microsoft DataGrid Control 6.0(OLEDB)”选项,将DataGrid控件添加到工具箱,再将DataGrid控件放置到窗体上。设置DataGrid网格控件的DataSource属性为Adodc1,就可将DataGrid1绑定到数据控件Adodc1上。 显示在DataGrid网格内的记录集,可以通过DataGrid控件的AllowAddNew、AllowDelete和Allow

17、Update属性设置控制增,删、改操作。 如果要改变DataGrid网格上显示的字段,可用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选择“检索字段”选项。Visual Basic提示是否替换现有的网格布局,单击“是”按钮就可将表中的字段装载到DataGrid控件中。再次用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选择“编辑”选项,进入数据网格字段布局的编辑状态,此时,当鼠标指在字段名上时,鼠标指针变成黑色向下箭头。用鼠标右键单击需要修改的字段名,在弹出的快捷菜单中选择“删除”选项,就可从DataGrid控件中删除该字段,也可选择“属性”选项修改字段的显示宽度或字段标题。图9

18、.14所示为具有增、删、改功能的数据网格绑定。标有号的记录行表示允许增加新记录。图9.14 具有增、删、改功能的数据网格绑定954 使用数据窗体向导Visual Basic 6.0提供了一个功能强大的数据窗体向导,通过几个交互过程,便能创建前面介绍的ADO数据控件和绑定控件,构成个访问数据的窗口。数据窗体向导属于外接程序,在使用前必须从Visual Basic 6.0集成开发环境的横向菜单中点击“外接程序”,再点击子菜单的“外接程序管理器”,从打开的“外接程序管理器”窗口选择 “VB 6数据窗体向导” 命令,将数据窗体装入到“外接程序”中。这里以Student.mdb数据库的基本情况表作为数据

19、源来说明数据访问窗口建立的过程。 例9.7 使用数据窗体向导建立Student.mdb数据库的数据访问对话框。 步骤1:执行“外接程序”菜单中的“数据窗体向导”命令,进入“数据窗体向导-介绍”对话框,可以利用先前建立的数据窗体信息配置文件创建外观相似的数据访问窗体,选择“无”将不使用现有的配置文件。 步骤2:单击“下步”按钮,进入“数据窗体向导-数据库类型”对话框,可以选择任何版本的Access数据库或任何ODBC兼容的用于远程访问的数据库。本例中选择Access数据库。 步骤3:在“数据窗体向导数据库”对话框内选择具体的数据库文件。本例为Student.mdb数据库。步骤4:在“数据窗体向导

20、Form”对话框内设置应用窗体的工作特性。其中,在“窗体名称为”文本框输入将要创建的窗体名;“窗体布局”指定窗口内显示数据的类型,可以按单条记录形式显示,也可以按数据网格形式同时显示多条记录;绑定类型用于选择连接数据来源的方式,可以使用ADODC数据控件访问数据,也可以使用ADO对象程序代码访问数据。本例窗体名为frmjbqk,选“单个记录”形式,使用“ADO数据控件”访问数据。步骤5:在“数据窗体向导-记录源”对话框内选择所需要的数据。 其中,“记录源”下拉式列表框用于选择数据库中的表单,本例选择“基本情况”表;窗口中间的4个箭头按钮用于选定字段,“列排序按”下拉式列表框用于选择排序依据。步

21、骤6:在“数据窗体向导-控件选择”对话框内,选择所创建的数据访问窗体需要提供哪些操作按钮。步骤7:进入“数据窗体向导已完成”对话框,可以将整个操作过程保存到一个向导配置文件.rwp中。单击“完成”按钮结束数据窗体向导的交互,此时向导将自动产生数据访问对话框的画面及代码。可以对产生的窗体布局形式进行调整或在此基础上加上其他控件对象。图9.15为调整照片位置的数据访问对话框运行结果。各按钮的程序代码不难理解,请读者自己阅读。图9.15 数据窗体向导创建的数据访问对话框图9.16为窗体布局(步骤4)选定网格(数据表)形式的数据访问窗口运行结果。图9.17所示为窗体布局选定主表细表形式,以基本情况表作

22、为主表,学生成绩表为细表所建立的数据访问窗口。图9.18为窗体布局(步骤4)选定MSHFlexGrid数据网格形式的数据访问窗口运行结果。图9.16 选定网格(数据表)形式 图9.18 选定MSHFlexGrid数据网格图9.17 选定主表细表形式96 VB中SQL的实现SQL中使用SELECT语句实现查询,SELECT语句基本上是数据库记录集的定义语句。Data控件的RecordSource属性不定是数据表名,可以是数据表中的某些行或多个数据表中的数据组合。可以直接在Data控件的RecordSource属性栏中输入SQL,也可在代码中通过SQL语句将选择的记录集赋给数据控件的RecordS

23、ource属性,也可赋予对象变量。例9.8 将例9.5中的查找功能改用SQL语句处理,显示某专业的学生记录。使用SQL语句查询只要将例9.5中命令按钮Command5_Click事件写为如下代码:Private Sub Command5_Click() Dim mzy As String mzy = InputBox$(请输入专业, 查找窗) Data1.RecordSource = Select * From 基本情况 Where 专业 = & mzy & Data1.Refresh If Data1.Recordset.EOF Then MsgBox 无此专业!, , 提示 Data1.R

24、ecordSource = 基本情况 Data1.Refresh End IfEnd Sub 程序中“Select *”选择表中所有字段(也可以指定选择部分列);“From基本情况”短语指定数据来源;“Where 专业 = & mzy & ”短语构成查询条件,用于过滤表中的记录;Data1.Refresh方法激活这些变化。此时,若Data1.Recordset.EOF为True,表示记录过滤后无数据,重新打开原来的基本情况表。注意:代码中的两处Refresh语句不能合用为一句,这是因为在执行了Select命令后,必须激活这些变化,然后才能判断记录集内有无数据。也可用SQL语句实现模糊查询,命令

25、按钮Command5_Click事件改为如下代码:Private Sub Command5_Click() Dim mzy As String mzy = InputBox$(请输入专业, 查找窗) Data1.RecordSource = Select * From 基本情况 Where 专业 like * & mzy & * Data1.Refresh If Data1.Recordset.EOF Then MsgBox 无此专业!, , 提示 Data1.RecordSource = 基本情况 Data1.Refresh End IfEnd Sub 例9.9 用SQL语句从Student

26、.mdb数据库的两个数据表中选择数据构成记录集,并通过数据控件浏览记录集。在窗体上放置与例9.2类似的控件,如图9.20所示。Data控件的DatabaseName属性指定数据库Student.mdb,RecordSource属性空缺,各文本框的DataSource=Data1,DataField属性分别设置为学号、姓名、课程、成绩,而照片字段绑定图形框。本例要求从基本情况中选择学生的学号、姓名、照片,从学生成绩表中选择该学生的课程和成绩来构成记录集,可在Form_ Load事件中使用SQL语句,通过“Where 学生成绩表.学号=基本情况.学号”短语实现两表之间的连接,用Select命令从学

27、生成绩表中选择课程、成绩字段,从基本情况表中选择学号、姓名和照片字段构成记录集:Private Sub Form_Load() Data1.RecordSource = Select 基本情况.学号,基本情况.姓名,基本情况.照片,学生成绩表.课程,学生成绩表.成绩 From 学生成绩表,基本情况 Where 学生成绩表.学号=基本情况.学号End Sub 当窗体启动后,数据显示如图 9.19所示,数据控件上的箭头按钮可改变记录位置。如果要求显示的记录按一定的顺序排列,可使用ORDER BY子句。图 9.19 数据显示注意:当FROM子句列出多个表时,它们出现的顺序并不重要。Select短语中

28、字段的排列决定了所产生的记录集内每一列数据的排列顺序。为了提高可读性可以重新排序表中的字段。例9.10 用SQL指令按专业统计Student.mdb数据库中各专业的人数,要求按图9.20所示形式输出。在窗体上放置一个Data控件和一个网格控件MSFlexGrid1。Data1的DatabaseName属性指定数据库Student.mdb,网格控件的DataSource=Data1。图9.20 通过数据控件浏览记录集 为了统计各专业的人数,需要对基本情况表内的记录按专业分组。“Group By专业”可将同一专业的记录合并成一条新记录。要记录统计结果,需要构造一个输出字段,此时可使用SQL的统计函

29、数Count()作为输出字段,它按专业分组创建摘要值。若希望按用户要求的标题显示统计摘要值,可用As短语命名一个别名。“按专业统计人数”按钮的指令代码为:Private Sub Command1_Click() Data1.RecordSource = select 专业,count(*) as 人数 from 基本情况 group by 专业 Data1.RefreshEnd Sub 运行结果如图9.21。图9.21 使用SQL的统计函数 有时,我们只要返回一定数量的记录,如获取平均成绩最好的前5名,则“按平均成绩统计前5名” 按钮的指令代码为:Private Sub Command2_Cl

30、ick() Data1.RecordSource = select top 5 学号,avg(成绩) as 平均成绩 from 学生成绩表 group by 学号 order by avg(成绩) desc Data1.RefreshEnd Sub这里,“Group by 学号”短语将同一学生的各门课程的记录合并成一条记录,由Avg(成绩)计算出该学生的平均成绩,“Order By Avg(成绩) Desc”短语按平均成绩的降序排列数据,“Top 5”短语返回最前面的5条记录。如果不包括ORDER BY子句,查询将从学生成绩表中返回随机的5条记录。“恢复原表内容”按钮的指令代码为:Privat

31、e 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,各文本框的Datasource=Adodc1,DataField属性分别设置为学号、姓名、课程、成绩,而字段照片绑定图形框。

32、ADO数据控件的ConnectionString属性设置为与数据源连接的相关信息,通过操作完成与student.mdb的数据连接(此时,可查看到ConnectionString属性的内容);DataSource指定连接的数据库文件名,如图9.22。图9.22 使用ADO数据控件即DataSource属性使用SQL语句:select 学生成绩表.*,基本情况.姓名,基本情况.照片 from 学生成绩表,基本情况 where 学生成绩表.学号=基本情况.学号程序执行后将产生与图9.22所示相同的效果。例9.12 设计一个窗体,计算Student.mdb数据库内学生成绩表中每个学生的平均成绩,产生姓

33、名、平均成绩和最低成绩三项数据,按平均成绩降序排列数据,并用该数据作图。 学生成绩表中没有平均成绩和最低成绩这两项数据,可以在SELECT子句内使用统计函数AVG()和Min()产生,“Group By学号”可将同一学生的记录合并成一条新记录。学生成绩表中没有姓名字段,故需要通过条件“基本情况.学号=学生成绩表.学号”从基本情况表取得。然后,将产生的记录集连接到ADO数据控件上。 要显示作图数据,可在窗体上放置一个网格控件(选择工程部件中Microsoft Data Grid Control 6.0 (OLEDB)),设置网格的DataSource=Adodcl,将其绑定到ADO数据控件上。此

34、例将Adodc1控件的Visible属性设为False,故在图9.22中看不到Adodc1控件。 要绘制图表,可使用绑定控件MsChart。MsChart控件也是一个Active X控件,需要通过“工程部件”菜单命令,将MsChart控件添加到工具箱中。要将作图数据传送到Mschart控件,只需要设置MsChart1.DataSource=Adodc1。如果只要选择部分数据作图,可以将作图数据存入到数组,再设置MsChart1.Data=数组名即可。 将Adodcl的RecordSource属性设置为SQL语句,代码如下:”select 基本情况.姓名,avg(成绩) as 平均成绩,min(

35、成绩) as 最低成绩 from 学生成绩表,基本情况 where 学生成绩表.学号=基本情况.学号 group by 学生成绩表.学号,基本情况.姓名 order by avg(成绩) desc”程序执行后将产生图9.23所示的效果。图9.23 显示作图数据97 VB中使用ODBC在VB环境开发数据库应用时,与数据库连接和对数据库的数据操作是通过ODBC、Microsoft Jet(数据库引擎)等实现的。Microsoft Jet主要用于本地数据库,而在CS结构的应用中一般用ODBC。例9.13 使用ADO数据控件,设计一个简单窗体,用来扫描student.mdb数据库的基本情况表。窗体中几

36、个约束数据文本框绑定到连接表中当前记录的ADO数据控件。这个项目不需编程,步骤如下:步骤1:开始新项目,并在项目工具箱中加进ADO数据控件。 步骤2:在窗体上放一个ADO数据控件的实例。 步骤3:右键单击控件,并从弹出菜单中选择“ADODC属性”命令(或单击Adodc1的ConnectionString属性旁的“”按钮),打开ADO数据控件的属性页。 步骤4:选择“通用”标签,并选择“使用ODBC数据资源名称”单选项。 步骤5:现在要指定数据源(ADO数据控件联系的数据库)。可以看出,可以指定多种数据库,但应用程序用相同的方法处理。不管实际提供表格的数据库为何种形式,它用相同的语句访问表格及其

37、记录。 数据源名就是系统知道的数据库名。数据源名只要生成一次,此后任何应用程序都可以使用。如果系统上没有数据源名,则按下列步骤生成新的数据源名: 1.单击“新建”按钮,打开“创建新数据源”窗口。在这个窗口中可以选择数据源类型,选项包括: 文件数据源 所有用户均可以访问的数据库文件。 用户数据源 只有你能访问的数据库文件。 系统数据源 能登录该机器的任何用户都能访问的数据库文件。 2选择“系统数据源”,以便从网上登录测试锁定机制(如果在网络环境中)。 3单击“下一步”按钮显示“创建新数据源”窗口,指定访问数据库所用的驱动程序。 驱动程序必须符合数据库。可以看出,数据源可以是个大数据库,包括Acc

38、ess、Oracle、 SQL Server。本例采用Access数据库。 4选择Microsoft Access Driver,并单击“下一步”按钮。 新窗口指出,已选择了系统数据源并用Access驱动程序访问。 5单击“完成”按钮,生成数据源。 这时就可以指定将哪个Access数据库赋予新建的数据源。在出现的“ODBC Microsoft Access 安装”窗口中,执行如下操作步骤: 6在第一个框中,指定数据源名mystudent,在“描述”框中,输入简短说明:student数据源(说明可以空缺)。 7单击“选择”按钮,并通过“选定数据库”窗口选择数据库,找到VB98文件夹中的stude

39、nt.mdb(假设student.mdb存放在此)。 8回到ADO数据控件的属性页时,新的数据源即会出现在“使用ODBC数据资源名称”下拉清单中。步骤6:展开下拉清单,并选择mystudent数据源。实际上,这就指定了要使用的数据库(类似于设计Data控件的DatabaseName属性)。下一个任务是,选择ADO数据控件能看到的数据库记录(表格或SQL语句返回的记录集)。 步骤7:切换到“记录源”标签(或单击Adodc1的RecordSource属性旁的“”按钮)。 步骤8:在“命令类型” 下拉清单中,选择adCmdTable项目,这是记录源的类型。 步骤9:在“表或存储过程名称”下拉的清单中

40、出现数据库中的所有表名。选择基本情况表。 Adodc1控件的RecordSource属性栏中出现student.mdb数据库的基本情况表。步骤10:将四个文本框控件和四个标题控件放在窗体上。将它们的DataSource=Adodc1,DataField分别设置为学号、姓名、专业、出生年月。 Mystudent数据源已经注册到系统上,不必再次生成。它会自动出现在ADO数据控件属性页的“使用ODBC数据资源名称”下拉清单中。 运行结果如图9.24。图9.24 使用ADO数据控件及ODBC例9.14 ADO数据控件使用自己的高级约束数据控件,即DataList和DataCombo控件。本例要求在Da

41、taList控件中显示学号,要将DataList控件与ADO数据控件连接,使用户每次选择清单中的新学号,窗体上的文本框中出现相应的字段。要使用DataList和DataCombo控件,首先要将其加进工具箱。步骤如下: 1选择“工程|部件”菜单,打开“部件”对话框,选取“Microsoft DataList Controls 6.0(OLEDB)”复选项。 2将DataList控件的实例放在窗体上。 3要用基本情况表中的学号建立DataList控件,设置属性RowSource= Adodc1,ListField=学号。 如果这时运行应用程序,则会自动生成DataList控件,但清单中所选的学号对

42、约束数据控件没有影响。我们要加入一些代码,在清单中每次选择另一学号时,移动ADO数据控件,具体方法如下:Private Sub DataList1_Click() Adodc1.Recordset.Bookmark = DataList1.SelectedItemEnd Sub 每次单击清单中的新项目时,这个项目就成为ADO数据控件的书签。 大多数情况下,用于自动建立DataList控件的数据通常没有排序。如果DataList控件中学号没有排序,就无法方便地找到清单中的项目。要使DataList控件中学号排序,按如下步骤修改ADO数据控件的RecordSource属性: 1.设计图9.25所示

43、的窗体。 2.右键单击Adodc1控件,并在属性页中将“ODBC 数据源名”设置为mystudent。 3切换到“记录源” 标签,指定SQL 语 图9.25 Adodc1控件句而不是表格:将“命令类型”设置为 adCmdUnknown,并在“命令文本”框中输人下列SQL语句: select * from 基本情况 order by 学号 例9.15 用外接程序的数据窗体向导创建主细表(数据库student.mdb中的主表是基本情况表,细表是学生成绩表)。步骤1:选择 “外接程序”的“数据窗体向导”菜单(如菜单中无此选项,可通过“外接程序”的“外接程序管理器”加载“VB 6 数据窗体向导”),出

44、现“数据窗体向导介绍”窗口,选择“无”,单击下一步;步骤2: 在“数据窗体向导数据库类型”窗口“选择Remote(ODBC)”,单击下一步;步骤3: 在“数据窗体向导连接信息”窗口,在DSN(数据源名)栏选择已定义的数据源mystudent,单击下一步;步骤4: 在“数据窗体向导Form”窗口,在“窗体名称为”文本框中输入窗体名称,本例输入frm_jbqk;窗体布局选择“主表/细表”,单击下一步;步骤5: 在“数据窗体向导主表记录源”窗口选择主表及其字段,本例在“记录源” 文本框选择主表为“基本情况”,在“可用字段”中挑选字段学号、姓名、专业到“选定字段”,单击下一步;步骤6:在“数据窗体向导

45、详细资料记录源”窗口选择细表及其字段,本例在“记录源” 文本框选择细表为“学生成绩表”,在“可用字段”中挑选字段学号、课程、成绩到“选定字段”,单击下一步;步骤7:在“ 数据窗体向导记录源关系”窗口,选择主表及其细表相连接的字段,本例在“主表”和“细表”下拉列表框中均选择“学号”,单击下一步;步骤8:在“ 数据窗体向导控件选择”窗口选择需要的控件,单击下一步; 步骤9:单击“完成”按钮。运行程序结果如图9.26所示。图9.26 用外接程序的数据窗体向导创建主细表习题与思考题9.1 选择题1要利用数据控件返回数据库中记录集,则需设置_属性。(A)Connect (B)DatabaseName (

46、C)RecordSource (D)RecordType2Seek方法可在_记录集中进行查找。(A)Table类型 (B)Snapshot类型 (C)Dynaset类型 (D)以上三者3下列_组关键字是Select语句中不可缺少的。(A)Select 、From (B)Select、Where(C)From、Order By(D)Select、All4在使用Delete方法删除当前记录后,记录指针位于_。被删除记录上 (B)被删除记录的上一条(C)被删除记录下一条(D)记录集的第一条5使用ADO数据控件的ConnectionString属性与数据源建立连接相关信息,在属性页对话框中可以有_种不

47、同的连接方式。(A)(B)(C)(D)6数据绑定列表框DBList和下拉式列表框DBCombo控件中的列表数据通过属性_从数据库中获得。DataSource和DataField (B)RowSource和ListField(C)BoundColumn和BoundText (D)DataSource和ListField7DBList控件和DBCombo控件与数据库的绑定通过属性_实现。DataSource和DataField (B)RowSource和ListField(C)BoundColumn和BoundText (D)DataSource和ListField8下列所显示的字符串中,字符串_

48、不包含在ADO数据控件的ConnectionString属性中。Microsoft Jet 3.51 OLE DB ProviderData Source=C:Mydb.mdbPersist Security Info=False2-adCmdTable09.2 填空题1要使绑定控件能通过数据控件ata1连接到数据库上,必须设置控件的_属性为_,要使绑定控件能与有效的字段建立联系,则须设置控件的_属性。2如果数据控件连接的是单表数据库,则_属性应设置为数据库文件所在的子文件夹名,而具体文件名放在_属性中。3记录集的RecordCount属性用于对Recordset对象中的记录计数,为了获得准确

49、值,应先使用_方法,再获得RecordCount属性值。4要在程序中通过代码使用ADO对象,必须先为当前工程引用_。9.3 问答题1记录、字段、表与数据库之间的关系是什么?2Visual Basic中记录集有几种类型?有何区别?3要利用数据控件返回数据库中记录的集合,怎样设置它的属性?4对数据库进行增、改操作后必须使用什么方法确认操作?5怎样使绑定控件能被数据库约束?6怎样准确地获得记录集的记录计数?7ODBC技术与传统的数据库编程方式有什么区别?8什么是ODBC数据源?有哪三类?附录资料:不需要的可以自行删除 数据库系统全面概述第一章 数据库系统概论 本章目的在于使读者对数据库系统的基本知识

50、能有一个较为全面的了解,为今后的学习和工作打下基础。本章重点介绍了有关数据库结构和数据库系统组织的基本知识和基本概念,以及常见的三种类型的数据库系统的特点。重点介绍关系数据库的有关知识。1.1 数据管理技术发展史 随着生产力的不断发展,社会的不断进步,人类对信息的依赖程度也在不断地增加。数据作为表达信息的一种量化符号,正在成为人们处理信息时重要的操作对象。所谓数据处理就是对数据的收集、整理、存储、分类、排序、检索、维护、加工、统计和传输等一系列工作全部过程的概述。数据处理的目的就是使我们能够从浩瀚的信息数据海洋中,提取出有用的数据信息,作为我们工作、生活等各方面的决策依据。数据管理则是指对数据

51、的组织、编码、分类、存储、检索和维护,它是数据处理的一个重要内容中心。数据处理工作由来以久,早在1880年美国进行人口普查统计时,就已采用穿孔卡片来存储人口普查数据,并采用机械设备来完成对这些普查数据所进行的处理工作。电子计算机的出现以及其后其硬件、软件的迅速发展,加之数据库理论和技术的发展,为数据管理进入一个革命性阶段提供有力的支持。根据数据和应用程序相互依赖关系、数据共享以及数据的操作方式,数据管理的发展可以分为三个具有代表性的阶段,即人工管理阶段、文件管理阶段和数据库管理阶段。【1】人工管理阶段 这一阶段发生于六十年代以前,由于当时计算机硬件和软件发展才刚刚起步,数据管理中全部工作,都必

52、须要由应用程序员自己设计程序完成去完成。由于需要与计算机硬件以及各外部存储设备和输入输出设备直接打交道,程序员们常常需要编制大量重复的数据管理基本程序。数据的逻辑组织与它的物理组织基本上是相同的,因此当数据的逻辑组织、物理组织或存储设备发生变化时,进行数据管理工作的许多应用程序就必须要进行重新编制。这样就给数据管理的维护工作带来许多困难。并且由于一组数据常常只对应于一种应用程序,因此很难实现多个不同应用程序间的数据资源共享。存在着大量重复数据,信息资源浪费严重。【2】文件管理阶段 这一阶段发生于六十年代,由于当时计算机硬件的发展,以及系统软件尤其是文件系统的出现和发展,人们开始利用文件系统来帮

53、助完成数据管理工作,具体讲就是:数据以多种组织结构(如顺序文件组织、索引文件文件组织和直接存取文件组织等)的文件形式保存在外部存储设备上,用户通过文件系统而无需直接与外部设备打交道,以此来完成数据的修改、插入、删除、检索等管理操作;使用这种管理方式,不仅减轻进行数据管理的应用程序工作量,更重要地是,当数据的物理组织或存储设备发生变化时,数据的逻辑组织可以不受任何影响,从而保证了基于数据逻辑组织所编制的应用程序也可以不受硬件设备变化的影响。这样就使得程序和数据之间具有了一定的相互独立性。 但由于数据文件的逻辑结构完全是根据应用程序的具体要求而设计,它的管理与维护完全是由应用程序本身来完成,因此数

54、据文件的逻辑结构与应用程序密切相关,当数据的逻辑结构需要修改时,应用程序也就不可避免地需要进行修改;同样当应用程序需要进行变动时,常常又会要求数据的逻辑结构进行相应的变动。在这种情况下,数据管理中的维护工作量也是较大的。更主要的是由于采用文件的形式来进行数据管理工作,常常需要将一个完整的、相互关联的数据集合,人为地分割成若干相互独立的文件,以便通过基于文件系统的编程来实现来对它们的管理操作。这样做同样会导致数据的过多冗余和增加数据维护工作的复杂性。例如人事部门、教务部门和医务部门对学生数据信息的管理,这三个部门中有许多数据是相同的,如姓名、年龄、性别等,由于是各部门均是根据自己的要求,建立各自

55、的数据文件和应用程序,这样不仅造成了大量的相同数据重复存储,而且在修改时,常常需要同时修改三个文件中的数据项,如修改学生年龄,此外若需要增加一个描述学生的数据项,如通讯地址,那么所有的应用程序就必须都要进行相应的修改。除此之外,采用文件系统来帮助进行数据管理工作,在数据的安全和保密等方面,也难以采取有效的措施加以控制。【3】数据库管理阶段 1在不断改进和完善文件系统的过程中,从六十年代后期开始,人们逐步研究和发展了以数据的统一管理和数据共享为主要特征的数据库系统。即在数据在统一控制之下,为尽可能多的应用和用户服务,数据库中的数据组织结构与数据库的应用程序相互间有较大的相对独立性等。与以往前数据

56、管理方法和技术相比,利用数据库系统来进行数据管理工作具有以下三个显著特点:(1)从整体角度组织数据 数据库系统与文件系统的最大差别就在于前者在描述数据时,不仅仅是对数据本身进行描述,而且对数据之间的相互联系也进行了描述。因此在组织数据时是从一个相对较高的整体角度进行的,而不是仅仅局限于个别的数据管理应用场合。如前面提到的人事部门、教务部门和医务部门对学生数据的管理工作,在利用数据库系统来进行管理时,若从整体考虑,其数据的组织结构如图1.1所示。图1.1 学生信息数据组织结构 采用这种数据组织不仅可以有效地解决了文件系统的数据组织中所存在的数据冗余以及数据一致性维护的问题。更主要的是它可以使人们

57、从更高的全局角度出发,合理地组织数据,从而有利于更大范围内的数据资源的共享,提高信息的使用效率。(2)数据可为多个应用服务 正因为数据库中的数据是从整体角度进行组织的,因此,数据库中所存储的数据往往就不仅局限于只为一二个应用提供服务,而是在更大范围内为仅可能多的应用提供服务,如图1.1所示的一个数据库中所存储的数据,就至少可以为三个部门的应用提供服务。而实际上如图1.1所示的数据组织结构仅仅只是一个学校数据管理数据库中的一小部分。与此同时由于数据库系统是以多级(层)组织模式对数据进行组织的,各级(层)模式之间的映射是由数据库系统自己完成的,这就使得数据与程序之间可以具有较高的物理和逻辑相对独立

58、性。正是这一点,给数据库中的数据为多个应用提供服务奠定了基础。事实上数据库的规模越大,所能够提供的应用服务就可以越多,也就越能体现出数据库在数据管理中的优势。当然这只是相对而言,随着数据库中数据规模的扩大,数据库应用系统的制作和维护的工作也在迅速增加。(3)有一个数据库系统的管理软件 任何数据库系统都包含一个管理软件,即数据库系统的管理软件,通常又称为数据库管理系统,它负责统一管理数据库系统中所有数据资源,是数据库系统与用户应用之间的接口,通过它,用户可以不必要了解过多的计算机硬件、软件和数据库本身许多专业知识,更不用去了解数据库系统是如何完成数据管理工作的具体细节,如文件如何打开、关闭、读、

59、写等等,就可以通过编写一些较为简单数据库应用程序,很方便地完成在较高级别逻辑组织基础上的数据管理工作。除此之外,数据库管理系统还负责完成在对数据库进行并发访问时,保证数据一致性的并发控制工作;保证数据安全性的访问控制工作;以及在数据库系统出现故障时,提供保证数据一致性和完整性的恢复机制等诸多数据库系统本身的各种管理控制工作。因此这里也可以看出,数据库管理系统功能的强弱及其各项性能指标的好坏,是衡量数据库系统质量的一个极其重要的因素。 利用数据库系统进行数据管理工作,不仅可以保证数据的物理组织结构和存储设备与数据库应用程序之间保持相互独立性;同时也可以保证数据的逻辑组织结构与数据库应用程序之间保

60、持最大可能的相互独立性,即当数据的逻辑组织结构发生变化时,数据库应用程序的变动被限制在最小的范围内。由此可大大地减少数据库应用程序的开发与维护的工作量。 在数据库管理阶段,根据数据库系统本身所支持的数据模型的特点及所采用的相应数据库系统技术,可以认为数据库管理到目前为止已发展经历了三代,即层次网状模型代、关系模型代和面向对象模型代。 (1)层次网状模型代:流行于六十至七十年代,在这一代中的数据库系统所支持的数据模型均是层次模型或网状模型。世界上第一个数据库系统是于1964年由美国通用电气公司开发成功的IDS(Integrated Data Store),它就是基于网状模型的数据库系统。IBM公

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论