第11章 VB数据库开发 在各行各业的信息处理中,数据库技术得到了普遍应用。数据库技术所研究的问题是如何科学地组织和存储数据,如何高效地获取和处理数据。VB在数据库方面提供了强大的功能和丰富的工具。利用VB提供的数据库管理功能,可以很容易地进行数据库应用程序的开发。本章介绍数据库的基本知识和有关操作,主要内容有:数据库的基础知识,数据库的创建及基本操作,数据库的访问方法。 退出
11.1 数据库基础知识 11.2 创建数据库 11.3 结构化查询语言SQL 11.4 访问数据库 11.5 ADO控件
11.1 数据库基础知识 关系数据库是应用最多的一种数据库,数据库中保存的是如表11-1所示的那样有一定格式的数据表。 11.1 数据库基础知识 11.1.1 数据与数据库 11.1.2 关系型数据库 关系数据库是应用最多的一种数据库,数据库中保存的是如表11-1所示的那样有一定格式的数据表。
数据表是一组相关联的数据按行和列排列形成的二维表格,简称为表。 1.数据表 数据表是一组相关联的数据按行和列排列形成的二维表格,简称为表。 2.字段、记录 数据表一般都是多行和多列构成的集合。每一列称为一个字段(Field)。 3.关键字 如果数据表中某个字段值能唯一地确定一个记录,则称该字段名为候选关键字。
索引是为了加快访问数据库的速度并提高访问效率,特别赋予数据表中的某一个字段的性质,使得数据表中的记录按照该字段的某种方式排序。 4.索引 索引是为了加快访问数据库的速度并提高访问效率,特别赋予数据表中的某一个字段的性质,使得数据表中的记录按照该字段的某种方式排序。 5.关系型数据库的分类 在VB中,关系型数据库一般可以分为两类:一类是本地数据库,如Access、FoxPro等;另一类就是客户/服务器数据库。
11.2 创建数据库 为了开发数据库应用程序,首先要创建一个数据库。本节主要介绍利用VB提供的非常实用的工具程序—可视化数据管理器(Visual Data Manager)创建数据库的方法。 11.2.1 创建一个数据库 在此以Microsoft Access数据库为例,因为这种数据库是VB内联的。 我们不妨以表11-1为例,假设该表为档案管理数据库(数据库文件名为dagl.mdb)中的一个表。接下来详细说明其创建过程。
1.启动数据管理器 2.创建数据库 3.打开数据库
11.2.2 创建数据表 建立好数据库之后,就可以向数据库中添加数据表了。Access数据库使用大型数据库的数据组织方法,数据库中包含多个数据表,数据保存在数据表中。每个数据表不是以文件的形式保存在磁盘上,而是包含在数据库文件中。通常,将一个管理系统软件所涉及到的数据表都放在一个数据库中。在数据库中不仅仅存放数据,而且还包含数据表之间的关系、视图、数据准则和存储过程等等。下面以表11-1内容为例介绍建立和添加Access数据表的方法。
在创建数据表之前,必须了解实际情况中需要哪些数据,用来确定表的字段、字段类型、长度、取值范围等。“学生成绩表”的结构如表11-2所示。 1.建立数据表结构 在创建数据表之前,必须了解实际情况中需要哪些数据,用来确定表的字段、字段类型、长度、取值范围等。“学生成绩表”的结构如表11-2所示。
建立表结构后,可以根据需要修改表结构。如添加字段、删除原有字段、修改表名等等。 2.修改数据表结构 建立表结构后,可以根据需要修改表结构。如添加字段、删除原有字段、修改表名等等。 3.输入数据 完成了表结构的建立后,就可以向表中输入数据。方法如下:
查询操作是数据库中的一个重要功能,在此我们以“查询生成器”的使用为例进行讲解。 11.2.3 查询 查询操作是数据库中的一个重要功能,在此我们以“查询生成器”的使用为例进行讲解。 1.创建查询 2.修改查询
11.3 结构化查询语言SQL SQL(Structure Query Language结构化查询语言)是一种用于数据查询的编程语言。 它已成为关系数据库语言的国际标准。 对于VB中的关系数据库,一旦数据存入数据库以后,就可以用SQL同数据库“对话”。通常,都是由用户用SQL来“发问”,数据库则以符合发问条件的记录来“回答”。查询的语法中通常包含表名、字段名及一些条件。SQL语句以关键字开头,后跟完整描述一个操作的短语。例如,下面的语句可以从学生成绩表中查询到所有文秘专业学生的记录: Select * From 学生成绩 where专业='文秘'
表11-3列出了常用的SQL语句的关键字。 表11-3 常用SQL语句关键字
Select语句用来创建一个选择查询,用于从已有的数据库中检索记录。 (2)使用格式 (1)语句功能 Select语句用来创建一个选择查询,用于从已有的数据库中检索记录。 (2)使用格式 Select <字段名表> From<数据表名> [Where <筛选条件>] 例如:从学生成绩数据表中检索出张三同学的记录。 Select 学号,姓名,专业,高数 From学生成绩 Where 姓名='张三'
Select Into语句用来为表做备份或将表输出到其它数据库中。新表的结构与原表相同与否,取决于字段个数和顺序的选择。 (1)语句功能 Select Into语句用来为表做备份或将表输出到其它数据库中。新表的结构与原表相同与否,取决于字段个数和顺序的选择。 (2)使用格式 Select <字段名表> Into <新表名> From<源表名> “字段名表”说明内容同Select语句。 例如:创建与“学生成绩”表一样的表,表名为“学生成绩2”。 Select * Into 学生成绩2 From 学生成绩
Update语句用来创建一个更新查询,按照指定条件修改表中的字段值。 (2)使用格式: (1)语句功能 Update语句用来创建一个更新查询,按照指定条件修改表中的字段值。 (2)使用格式: Update <数据表名> Set <字段1>=<表达式>[,<字段2>=<表达式>,…] Where<筛选条件> 说明:表达式的数据类型应该与字段数据类型一致。 例如:更新“学生成绩”表中学号为“994206”的记录,其专业改为“文秘”。 Update 学生成绩 Set 专业='文秘' Where 学号='994206'
Delete语句可以创建一个删除查询,用来按照指定条件删除表中的纪录。 (1)语句功能 Delete语句可以创建一个删除查询,用来按照指定条件删除表中的纪录。 (2)使用格式: Delete From <数据表名> Where <筛选条件> 例如:从数据表中删除王五的记录。 Delete From 学生成绩 Where 姓名='王五'
Insert语句可以建立一个添加查询,向数据表中添加一个或多个记录。有两种基本格式。 (1)语句功能 Insert语句可以建立一个添加查询,向数据表中添加一个或多个记录。有两种基本格式。 (2)格式一 Insert Into <目标表名> Select <字段1>[,<字段2>…] From <源表名> 例如:将专业为“经管”的所有学生记录加入到经管数据表中(表名为“经管专业”)。 Insert Into 经管专业Select * From 学生成绩 Where 专业='经管'
(3)格式二 Insert Into <目标表名>(<字段1> [,<字段2>…])Values(<值1> [,<值2>…]) 说明:值1、值2等表达式的顺序位置与字段1、字段2的顺序对应一致。用此命令可插入一个记录,并对字段赋值。 例如:向数据表中加入一条新的记录。 Insert Into 学生成绩(学号,姓名,专业,高数,计算机,英语) Values('992308','王政','交通',85,75,90)
11.4 访问数据库 ADO是Microsoft公司在VB6.0中最新推出的数据访问策略,实际是一种访问各种数据类型的访问机制。 11.4 访问数据库 11.4.1 数据访问接口 ADO是Microsoft公司在VB6.0中最新推出的数据访问策略,实际是一种访问各种数据类型的访问机制。 本章主要介绍关于ADO数据访问的方法。 11.4.2 ADO对象模型数据访问 1.ADO对象模型简介 ADO数据对象模型包括如表11-4所示的可编程对象。
若要在VB中使用ADO对象,必须在工程中添加对ADO对象的引用。 (1)连接(Connection)对象 (2)命令(Command)对象 (3)记录集(Recordset)对象 2.使用ADO对象访问数据库 若要在VB中使用ADO对象,必须在工程中添加对ADO对象的引用。 要添加对ADO对象的引用,可单击“工程” 菜单上“引用”命令,打开“引用”对话框,如图11-14所示,在“可用的引用”列表中,选择想引用的ADO对象库。
在应用程序中添加了对ADO对象库的引用后,须先声明一个Connection对象变量,再生成一个Connection对象的实例, 例如: Dim ans1 AS ADODB.Connection '声明ans1是一个Connection变量 Set ans1 = New ADODB.Connection '生成一个实例 或者两步合二为一: Dim ans1 AS New ADODB.Connection 使用ADO编程一般要按照以下几个步骤。 (1)创建连接
(2)创建命令 (3)运行命令返回记录集 (4)操作记录集 【综合举例】根据上述编程步骤,设计一个简单程序,对11-2节所创建的数据库(F:\数据库\dagl.mdb)进行查询,输出计算机成绩在75分以上的同学的姓名、专业。
程序代码如下: Private Sub Command1_Click() Dim i% Dim ans1 As ADODB.Connection Dim cmd As New ADODB.Command Dim rst1 As New ADODB.Recordset Set ans1 = New ADODB.Connection ans1.CursorLocation = adUseClient ans1.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;" _
& "Data Source=F:\数据库\dagl.mdb;" Set cmd.ActiveConnection = ans1 cmd.CommandText = "Select * From 学生成绩" rst1.CursorLocation = adUseClient rst1.Open cmd,,adOpenStatic,adLockBatchOptimistic rst1.Sort = "学号" rst1.Filter = "计算机 > 75" rst1.MoveFirst
For i = 0 To rst1.RecordCount - 1 Print rst1.Fields("姓名")& “ “ & rst1.Fields("专业") rst1.MoveNext Next i Set rst1 = Nothing Set cmd = Nothing Set ans1 = Nothing End Sub 如图11-15所示为程序运行结果。
11.5 ADO控件 在应用程序中,我们可以直接使用ADO数据对象,完全通过代码访问数据库,但程序代码设计比较复杂。如果采用VB 6.0中提供的ADO数据控件,不必编写很多代码就可以更方便地创建ADO对象,实现对本地或远程数据源的访问。 11.5.1 添加ADO数据控件 ADO数据控件属于ActiveX控件,每次创建工程前都要先将其添加到工具箱中,这样在以后的程序设计中就可以象常用控件一样使用。 11.5.2 使用ADO DATA控件连接数据库