第十章 VB与数据库 一、教学内容 1.数据库概述 2.数据管理器 3.使用数据控件访问数据库 4.报表 二、目的要求 1.理解数据库的基本概念 2.掌握利用“可视化数据管理器”创建及维护数据库的方法 3.掌握使用数据控件访问数据库的基本方法 4. 掌握使用数据环境设计器与数据报表设计器构造报表的方法 三、教学重点与难点 教学重点:“可视化数据管理器”创建及维护数据库 使用数据控件访问数据库的基本方法 教学难点:使用数据控件访问数据库的基本方法 四、教学方法 多媒体教学 第一讲 数据库概述与数据管理器(2学时) 一、教学内容 10.1 数据库概述 10.2 数据管理器 二、目的要求 1. 理解数据库的基本概念 2.掌握利用“可视化数据管理器”创建及维护数据库的方法 三、教学重点与难点 教学重点:数据库的基本概念 利用“可视化数据管理器”创建及维护数据库的方法 教学难点:数据库的基本概念 四、教学方法 多媒体教学 五、教学过程 10.1 数据库概述 10.1.1 数据库基本概念 1.数据库 数据库是以一定方式组织、存储及处理相互关联的数据的集合,它以一定的数据结构和一定的文件组织方式存储数据,并允许用户访问。这种集合具备下述特点: 最少冗余; 数据资源共享; 数据独立性,即数据独立于使用它的应用程序; 由统一的软件系统管理和控制数据的增加、删除、修改和检索; 2.数据库分类 数据库中数据的组织形式有多种,按数据库使用的数据结构模型划分,到目前为止,数据库可分为: ( 层次数据库:采用层次模型; ( 网状数据库:采用网状模型; ( 关系数据库:采用关系模型; ( 面向对象数据库:采用面向对象模型。 关系数据库中常用的术语有: 关系数据库的结构由表(专业术语称做关系)组成,每个表都有一个名称,称做表名,一般来说,同一个数据库中的表名不能相同。表中存储了一行行的数据,每一行数据称做一条“记录”(record)。表中纵向列称做列,又称做“字段”(field)。每一个字段(列)都有一个名称,称做字段名或列名。同一个表中,列名不能相同。应用程序通过表名和列名访问数据库中的数据。 ( 主键(Primary Key):又称做主码,它是能够唯一标识一条记录的一个或一组列(字段),去掉其中的某个列后,余下的列不能唯一标识表中的一条记录。 ( 外部键(Foreign Key):它由一个或多个属性组成,它或它们是另一个表的主键。通常使用外部键建立表之间的关系。 ( 索引:索引是加快数据库访问的一种手段,目的是实现对数据行的快速、直接存取而不必扫描整个表。索引通常对一个或多个列表创建,表的索引字段的每个值在索引中都有一个入口,同时使用指针指向具有该值的数据行。 ( 视图:它是一个与真实表相同的虚拟表,用于限制用户可以看到和修改的数据量,从而简化数据的表达式。 ( 存储过程:它是一个编译过的SQL程序。在该过程中可以嵌入条件逻辑、传递参数、定义变量和执行其他编程任务。 3.数据库管理系统(DBMS) 数据库管理系统是基于某种数据结构模型的、管理数据库并提供数据库访问接口的通用软件,它通常具备下述功能: ( 数据库定义功能:提供数据定义语言DDL,用户使用数据定义语言能够定义数据库的结构、数据完整性和安全性等约束条件。 ( 数据库操作功能:提供数据操作语言DML,用户使用数据操作语言完成数据查询、插入、删除等操作; ( 数据库运行、控制功能:提供数据安全性控制、数据完整性控制、多用户环境的并发控制以及数据库恢复等; ( 数据库维护功能:提供数据加载、转储、数据库重组、性能分析与监控等; ( 数据字典:存放数据库结构的描述等信息; ( 数据通讯功能:实现联机处理、分时处理、分布式处理等功能。 10.1.2 VB数据库应用程序 1.VB数据库应用程序的组成 VB数据库应用程序由以下3大部分组成: ( 用户界面 ( 数据库引擎 ( 数据库 2.用户和数据库引擎的接口 用户和数据库引擎的接口(即数据访问接口)有如下几种: ( 数据控件(Data Control) ( 数据访问对象(DAO) ( 远程数据对象(RDO) ( ActiveX数据对象(ADO) 3.VB6.0可以访问的数据库类型 VB可以通过数据库引擎访问以下3类数据库: ( Jet数据库:数据库由Jet引擎直接生成和操作,不仅灵活而且快速。Microsoft Access 和VB使用相同的Jet数据库引擎。 ( ISAM 数据库:索引顺序访问方法(ISAM)数据库有几种不同的形式,如DBASE、Microsoft FoxPro和Paradox。在VB中可以生成和操作这些数据库。 ( ODBC 数据库:开放式数据库连接 (ODBC),这些数据库包括遵守ODBC标准的客户/服务器数据库,如 Microsoft SQL Server、Sybase 以及 Oracle等。VB可以使用任何支持ODBC标准的数据库。 4.VB数据库应用程序的数据库访问过程 当今的数据库系统大都采用客户/服务器访问模式。我们用Visual Basic 6.0编写的访问数据库的应用程序通常位于客户端,它向数据库管理系统(数据库服务器)发送访问请求,数据库服务器分析客户程序的请求、操作数据并向客户程序返回结果。如图10-1所示。 10.2 数据管理器 10.2.1创建一个数据库 使用 “可视化数据管理器”创建数据库的步骤 10.2.2向数据库中添加数据表 使用“数据库窗口”创建一个学生学籍表的操作步骤 10.2.3 数据表中数据的编辑 使用“可视化数据管理器”向数据库中添加、修改、删除记录的操作步骤 11.2.4 添加或删除索引 为表创建索引和/或指定主键的操作步骤 1.创建索引 2.删除索引 10.2.5 使用查询生成器 使用“查询生成器”构造和测试SELECT语句的步骤 六、作业 习题10.1 10.2 10.3 10.4 第二讲使用数据控件访问数据库(2学时) 一、教学内容 10.3 使用数据控件访问数据库 二、目的要求 1. 掌握使用数据控件访问数据库的基本方法 三、教学重点与难点 教学重点:数据控件的属性、集合、事件和方法 教学难点:使用数据控件访问数据库的基本方法 四、教学方法 多媒体教学 五、教学过程 10.3 使用数据控件访问数据库 创建了数据库和数据库中的表之后,应用程序就可以通过多种方式访问数据库中的数据,包括添加、删除、检索等。 数据控件本身不能显示数据库的数据,只能通过设置数据控件的一些属性,链接指定的数据库文件,再借助数据绑定控件显示字段内容并接受更改。 10.3.1 Data控件 数据控件(Data控件)是VB的基本控件,利用它可以在应用程序中访问前面所创建的数据库。 数据控件可以不用代码完成以下功能: ( 完成对本地和远程数据库的链接。 ( 打开指定的数据库表,或者是基于SQL的查询集。 ( 将表中的字段传至数据绑定控件,并针对数据绑定控件中的修改来更新数据库。 ( 关闭数据库。 数据绑定控件(也称数据识别控件)是指能够与Data控件一起使用、从而操作数据库中数据的控件。常用的数据绑定控件如标签、文本框、图片框、图像框、复选框、列表框和组合框等,VB还包括了若干种数据绑定的 ActiveX 控件,诸如DataGrid、DataCombo、Chart以及 DataList 控件等。用户也可以创建自己的数据绑定的 ActiveX 控件或从其他开发商购买控件。大多数数据绑定控件都有DataSource和DataField属性,前者指定绑定的数据源,后者指定绑定的字段。 1.数据控件的属性 (1)Connect属性 Connect属性定义数据控件连接的数据库类型, (2)DatabaseName属性 DatabaseName属性定义数据控件连接的数据库的名称。 (3)RecordSource属性 RecordSource属性定义数据控件操作的数据库表的名称。 (4)Exclusive属性 Exclusive属性指定数据库的打开方式。缺省值False表示允许多个程序同时以共享方式打开数据库,即支持用户的并发访问。如果把该属性的值设置为True,则指定只允许一个应用程序以独占方式打开数据库。 (5)RecordsetType属性 RecordsetType属性指定数据控件产生的记录集的类型。该属性可以指定三种风格的记录集:Table、Dynaset、Snapshot。 (6)ReadOnly属性 ReadOnly属性指定数据控件产生的记录集是否为只读类型。该属性为True时,记录集只读,否则可读可修改。 注意:设计程序时定义该属性后,该属性就起作用了,但是,如果在程序中通过代码动态修改该属性的值,那么修改之后必须执行数据控件的Refresh方法,ReadOnly属性的作用才能发挥出来。 (7)BOFAction属性 BOFAction属性指定记录集当前记录指针移动到第一条记录后,再向前移动时数据控件的操作方式。 (8)EOFAction属性 EOFAction属性指定记录集当前记录指针移动到最后一条记录后再向后移动时数据控件的操作方式。 (9)Recordset属性 Recordset属性指定或返回数据控件对应的Recordset对象,该对象中保存了数据控件对数据库查询的结果记录集。 (10)RecordCount属性 RecordCount属性返回记录集对象中已经访问过的记录数或记录总数。需要返回记录集中的记录总数时,执行语句: Recordset.MoveLast Print Recordset.RecordCount 2.数据控件的方法 (1)Refresh方法 在Data控件打开或重新打开数据库的内容时,该方法可以更新Data控件的数据设置。 (2)UpdateRecord方法 把当前的内容保存到数据库中,但不触发Validate事件。 (3) UpdateControl方法 将Data控件记录集中的当前记录填充到某个数据绑定控件。 3.数据控件的事件 (1)Error事件 当Data控件产生执行错误时触发。使用语法如下: Private Sub Data1_Error(DataErr As Integer,Response As Integer) 其中Data1是Data控件名字,DataErr为返回的错误号。Response设置执行的动作,为0时表示继续执行,为1时显示错误信息。 (2)Reposition事件 当某个记录成为当前记录后触发。通常是利用该事件进行以当前记录内容为基础的操作,如进行计算等。 (3)Validate事件 在记录改变之前,和使用删除、更新或关闭操作之前触发。 4.Recordset对象 (1)Recordset属性 ( AbsolutePosition属性 该属性用于标识记录集中的记录,以便在需要时快速地将记录指针指向一个记录。 ( Bookmark属性 该属性指示当前记录的位置。 (2)Recordset方法 Recordset属性本身也是个Recordset对象,它提供了下述方法来操作对象中的数据: ( Move方法 其功能是移动记录集中的当前记录指针。 向前移动n条记录时,使用语句:object.move n 向后移动n条记录时,使用语句:object.move -n ( MoveFirst方法 将记录指针移动到第一条记录上。 ( MoveLast方法 将记录指针移动到最后一条记录上。 ( MovePrevious方法 将记录指针移动到前一条记录。 ( MoveNext方法 将记录指针移动到后一条记录。 ( AddNew方法 向数据库中增加新的记录。 ( Edit方法 编辑当前记录。 ( Update方法 把修改结果保存到数据库中。 ( Delete方法 删除记录集中的当前记录。 ( FindFirst方法 自首记录开始向下查询匹配的第一条记录。 ( FindLast方法 自尾记录开始向上查询匹配的第一条记录。 ( FindPrevious方法 自当前记录开始向下查询匹配的第一条记录。 ( Find Next方法 自当前记录开始向上查询匹配的第一条记录。 (Seek方法 该方法只用于对表记录集类型的记录集中的记录进行查找。 ( Close方法 关闭记录集并释放系统资源。 10.3.2 Data控件的应用 使用Data控件和数据绑定控件来编辑、修改、增加、删除数据库中的数据的基本思路是:在窗体上放置几个文本框,用于编辑表中各个字段的数据。 实现步骤 “添加记录”事件过程的代码: Private Sub cmdAddNew_Click() …… Prompt$ = "请输入新记录各字段的值,然后单击数据控件上的左箭头按钮" rc = MsgBox(Prompt$, vbOKCancel, "添加记录") If rc = vbOK Then '如果用户单击“确定”按钮 Data1.Recordset.AddNew txtStNo.SetFocus End If …… End Sub “添加记录”事件过程的代码: Private Sub cmdDelete_Click() …… Prompt$ = "真的要删除记录吗?" rc = MsgBox(Prompt$, vbOKCancel, "删除记录") If rc = vbOK Then '当用户单击了"确定"按钮时 Data1.Recordset.Delete '删除当前记录 Data1.Recordset.MoveNext End If …… End Sub 六、作业 习题10.5 第三讲 报表(2学时) 一、教学内容 10.4报表 二、目的要求 掌握使用数据环境设计器与数据报表设计器构造报表的方法 三、教学重点与难点 教学重点: 数据环境设计器 数据报表设计器构造报表的方法 教学难点: 用数据报表设计器构造报表 四、教学方法 多媒体教学 五、教学过程 10.4 报 表 报表以格式化形式输出数据,有利于读者阅读和使用数据。Visual Basic 6.0提供了一个称之为“Microsoft数据报表设计器”(Microsoft Data ReportDesigner)的工具,该工具是一个多功能的报表生成器,能够创建分层结构的报表。该工具与数据源(如数据环境设计器)结合起来使用后,能够在几个不同的相关表上创建报表。这个报表设计器除了能够创建可打印报表外,还可以将报表导出到 HTML或文本文件中,以方便Internet应用和数据交换。 下面,我们将使用数据库student中三个表的数据,以数据报表设计器与数据环境设计器(Data Environment Designer)结合为例,说明构造报表的方法。该报表分组列出男同学各门功课的分数和女同学各门功课的分数。最后生成的报表如图10-18所示。 10.4.1 数据环境设计器 数据环境设计器(Data Environment Designer)用于创建和定义向其它控件、对象、工具提供数据源的数据环境对象。 创建数据环境对象的步骤 10.4.2 用数据报表设计器创建报表 使用数据环境设计器创建了数据环境对象后,就可以使用“数据报表设计器”创建数据报表了。一般来说,在数据报表中通常并不全部使用数据环境中定义的所有字段,有些字段可能会暂时不用,到底使用多少字段、使用哪些字段与具体的应用程序和数据库设计有关。 创建报表的步骤 10.4.3 预览和打印报表 1.预览报表 使用数据报表对象的Show 方法预览数据报表。 步骤 2.打印报表 打印报表,使用数据报表对象的PrintReport方法。 六、作业 习题10.6