第 11章 VB数据库开发在各行各业的信息处理中,数据库技术得到了普遍应用 。 数据库技术所研究的问题是如何科学地组织和存储数据,如何高效地获取和处理数据 。 VB在数据库方面提供了强大的功能和丰富的工具 。 利用 VB提供的数据库管理功能,可以很容易地进行数据库应用程序的开发 。 本章介绍数据库的基本知识和有关操作,
主要内容有:数据库的基础知识,数据库的创建及基本操作,数据库的访问方法 。
退出
11.1 数据库基础知识
11.2 创建数据库
11.3 结构化查询语言 SQL
11.4 访问数据库
11.5 ADO控件
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数据表的方法 。
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语句关键字
1,Select语句
( 1)语句功能
Select语句用来创建一个选择查询,用于从已有的数据库中检索记录。
( 2)使用格式
Select <字段名表 > From<数据表名 > [Where
<筛选条件 >]
例如:从学生成绩数据表中检索出张三同学的记录。
Select 学号,姓名,专业,高数 From学生成绩 Where 姓名 ='张三 '
2,Select Into语句
( 1)语句功能
Select Into语句用来为表做备份或将表输出到其它数据库中。新表的结构与原表相同与否,取决于字段个数和顺序的选择。
( 2)使用格式
Select <字段名表 > Into <新表名 > From<源表名 >
,字段名表”说明内容同 Select语句。
例如:创建与“学生成绩”表一样的表,表名为
“学生成绩 2” 。
Select * Into 学生成绩 2 From 学生成绩
3,Update
( 1)语句功能
Update语句用来创建一个更新查询,按照指定条件修改表中的字段值。
( 2)使用格式:
Update <数据表名 > Set <字段 1>=<表达式 >[,<
字段 2>=<表达式 >,?] Where< 筛选条件 >
说明:表达式的数据类型应该与字段数据类型一致。
例如:更新“学生成绩”表中学号为,994206”
的记录,其专业改为“文秘”。
Update 学生成绩 Set 专业 ='文秘 ' Where 学号 ='994206'
4,Delete语句
( 1)语句功能
Delete语句可以创建一个删除查询,用来按照指定条件删除表中的纪录。
( 2)使用格式:
Delete From <数据表名 > Where <筛选条件 >
例如:从数据表中删除王五的记录。
Delete From 学生成绩 Where 姓名 ='王五 '
5,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 访问数据库
11.4.1 数据访问接口
ADO是 Microsoft公司在 VB6.0中最新推出的数据访问策略,实际是一种访问各种数据类型的访问机制。
本章主要介绍关于 ADO数据访问的方法。
11.4.2 ADO对象模型数据访问
1,ADO对象模型简介
ADO数据对象模型包括如表 11-4所示的可编程对象 。
( 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控件连接数据库
主要内容有:数据库的基础知识,数据库的创建及基本操作,数据库的访问方法 。
退出
11.1 数据库基础知识
11.2 创建数据库
11.3 结构化查询语言 SQL
11.4 访问数据库
11.5 ADO控件
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数据表的方法 。
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语句关键字
1,Select语句
( 1)语句功能
Select语句用来创建一个选择查询,用于从已有的数据库中检索记录。
( 2)使用格式
Select <字段名表 > From<数据表名 > [Where
<筛选条件 >]
例如:从学生成绩数据表中检索出张三同学的记录。
Select 学号,姓名,专业,高数 From学生成绩 Where 姓名 ='张三 '
2,Select Into语句
( 1)语句功能
Select Into语句用来为表做备份或将表输出到其它数据库中。新表的结构与原表相同与否,取决于字段个数和顺序的选择。
( 2)使用格式
Select <字段名表 > Into <新表名 > From<源表名 >
,字段名表”说明内容同 Select语句。
例如:创建与“学生成绩”表一样的表,表名为
“学生成绩 2” 。
Select * Into 学生成绩 2 From 学生成绩
3,Update
( 1)语句功能
Update语句用来创建一个更新查询,按照指定条件修改表中的字段值。
( 2)使用格式:
Update <数据表名 > Set <字段 1>=<表达式 >[,<
字段 2>=<表达式 >,?] Where< 筛选条件 >
说明:表达式的数据类型应该与字段数据类型一致。
例如:更新“学生成绩”表中学号为,994206”
的记录,其专业改为“文秘”。
Update 学生成绩 Set 专业 ='文秘 ' Where 学号 ='994206'
4,Delete语句
( 1)语句功能
Delete语句可以创建一个删除查询,用来按照指定条件删除表中的纪录。
( 2)使用格式:
Delete From <数据表名 > Where <筛选条件 >
例如:从数据表中删除王五的记录。
Delete From 学生成绩 Where 姓名 ='王五 '
5,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 访问数据库
11.4.1 数据访问接口
ADO是 Microsoft公司在 VB6.0中最新推出的数据访问策略,实际是一种访问各种数据类型的访问机制。
本章主要介绍关于 ADO数据访问的方法。
11.4.2 ADO对象模型数据访问
1,ADO对象模型简介
ADO数据对象模型包括如表 11-4所示的可编程对象 。
( 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控件连接数据库