第13章 数 据 库

57
LOGO 第 13 第 第 第第第第 : • 第第第第第第第第 • 第第第第第第第第 • 第第第第第第第第第第第 • 第第 ADO 第第第第

description

第13章 数 据 库. 本章要点: • 数据库的基本概念 • 可视化数据管理器 • 数据控件和数据绑定控件 • 使用 ADO 访问数据. 13.1 数据库的基本概念. 数据管理: 手工管理→文件管理→数据库管理 数据库功能: 数据的组织 ; 数据的管理 数据的组织 : 数据库( Data Base:DB) — 以一定方式组织并存储在一起的相互有关的数据的集合。按组织方式的不同,分为三种模型,即: 关系数据库 ;层次数据库;网状数据库。 - PowerPoint PPT Presentation

Transcript of 第13章 数 据 库

Page 1: 第13章  数    据    库

LOGO

第 13 章 数 据 库

本章要点 :

• 数据库的基本概念

• 可视化数据管理器

• 数据控件和数据绑定控件

• 使用 ADO 访问数据

Page 2: 第13章  数    据    库

www.themegallery.com2

13.1 数据库的基本概念

• 数据管理 : 手工管理→文件管理→数据库管理 • 数据库功能 : 数据的组织;数据的管理 • 数据的组织 : 数据库 (Data Base:DB)— 以一定方式组

织并存储在一起的相互有关的数据的集合。按组织方式的不同,分为三种模型,即 : 关系数据库 ; 层次数据库 ; 网状数据库。

• 数据的管理 : 数据库管理系统 (DBMS)— 用户与数据库之间的接口,提供对数据库使用和加工的操作,如对数据库的建立、修改、检索、计算、统计、删除等。

• VB 可以处理多种数据库 : 如Access 、 FoxPro 、 DataBase 、 Excel 、 Paradox 等格式的数据库。

Page 3: 第13章  数    据    库

www.themegallery.com3

13.1.1 关系数据库的结构1. 表 : 将相关的数据按行和列的形式组织成二维表格即为表,

表通常用于描述某一个实体。2. 表名称 : 每个数据表的名称。3. 关系数据库 : 将数据存储在一些二维表中,然后 通过建

立各表之间的关系来定义数据库的结构。一个数据库通常包含多个数据表。

4. 数据库名称 : ACCESS 数据库扩展名为 .mdb

13.1 数据库的基本概念

Page 4: 第13章  数    据    库

www.themegallery.com4

例如 : “ 学生 .mdb” 数据库 (1) “ 学生基本信息” 表

学号 姓名 性别 班级 出生日期 专业编号 980010101

张涛 男 建 98-01 80-03-24 001

980010102

李明 男 建 98-01 80-12-09 001

…… …… …… …… …… ……990030101

王容 女 网 99-01 80-12-09 005(2)“ 专业” 表 专业编号 专业名称 系编号

001 建筑结构 001 002 道桥工程 001 …… …… ……006 给排水 003

(3)“ 系” 表系编号 系名

001 自动化 002 建筑 003 计算机

13.1 数据库的基本概念

Page 5: 第13章  数    据    库

www.themegallery.com5

以上三个表构成一个数据库。“ 学生基本信息”表与“专业”表通过“专业编号”建立

关系。“ 专业”表与“系”表通过“系编号”建立关系。

5. 表的结构

记录 : 表中的每一行称为一个记录。

字段 : 表中的每一列称为一个字段。

字段名 : 每个字段一个名称。

字段类型 : 每个字段一种类型。

表的结构按字段定义。

13.1 数据库的基本概念

Page 6: 第13章  数    据    库

www.themegallery.com6

表名 字段名 字段类型 字段长度

学生基本信息

学号 Text 9姓名 Text 10性别 Text 2班级 Text 7出生日期 Date 8专业编号 Text 3

专业专业编号 Text 3专业名称 Text 20系编号 Text 3

系系编号 Text 3系名称 Text 20

13.1 数据库的基本概念

Page 7: 第13章  数    据    库

www.themegallery.com7

6. 表中的关键字 • 候选关键字 : 如果表中的某个字段或多个字段组合 能唯

一地确定一个记录,称该字段或多个字段组合为侯选关键字。侯选关键字可以有多个。

• 主关键字 : 只能有一个。7. 表间的关联 按照某一个公共字段建立的一个表中记录同另一个表中记

录之间的关系。 有一对一、一对多 ( 或多对一 ) 、多对多关系。8. 外部键 实现与另一个表之间沟通的字段称为“外部键” 。 外部

键与其他表的主关键字相匹配 。

13.1 数据库的基本概念

Page 8: 第13章  数    据    库

www.themegallery.com8

9. 索引 • 为了加速查找而引入 • 按某个字段 ( 或字段组合 ) 排序 • 每个表可以有多个索引,但只能有一个是主索引 • 每个索引有一个名称

13.1 数据库的基本概念

Page 9: 第13章  数    据    库

www.themegallery.com9

13.1.2 数据访问对象模型 在 VB 中,要对数据库进行访问,需要通过数据访问对

象进行,数据访问对象包括 :1. DAO: Data Access Object — 数据访问对象2. RDO: Remote Data Object — 远程数据对象3. ADO: ActiveX Data Object —ActiveX 数据对象 ADO 是 DAO/RDO 的后继产物,它扩展了 DAO 和

RDO 所使用的对象模型,包含较少的对象,更多的属性、事件和方法。

通过 ADO 可以访问各种各样的数据源。13.1.3 结构化查询语言 (SQL) SQL—Structured Query Language 实现对数据库的检索、排序、统计、修改等多种操作。

13.1 数据库的基本概念

Page 10: 第13章  数    据    库

www.themegallery.com10

13.2 可视化数据管理器 提供可视界面,用于建立数据库;对数据库进行修改、添加、

删除、查询等操作。13.2.1 启动可视化数据管理器 外接程序→可视化数据管理器13.2.2 新建数据库 文件→ 新建→ Microsoft Access→Verson 7.0 MDB

→ 确定数据库文件保存位置及名称 显示 : 数据库窗口、 SQL 语句窗口13.2.3 打开数据库 打开 : 文件→打开数据库→ Microsoft Access

13.2.4 添加表(1) 在数据库窗口快捷菜单中选择“新建表”项 (2) 在打开的“表结构”对话框添加字段和索引

Page 11: 第13章  数    据    库

www.themegallery.com11

13.2.5 数据的增加、删除、修改 1. 确定记录集的类型和数据的显示方式

表类型动态集类型

快照类型

使用 Data 控件不使用 Data 控件

使用 DBGrid 控件

开始事务回滚当前事务

提交当前事务

13.2 可视化数据管理器

Page 12: 第13章  数    据    库

www.themegallery.com12

(1) 记录集类型 记录集对象 (Recordset 对象 ) : 是指来自基本表或查

询结果的记录全集。 VB 使用记录集对象访问数据库中的记录。

三种记录集类型 : 表类型 (Table): 直接更新数据表中的数据。 动态集类型 (Dynaset): 更新操作先在内存中进行。 快照类型 (Snapshot): 数据仅供读取。(2) 在数据编辑窗口数据记录的显示方式 使用 Data 控件 : 不使用 Data 控件 : 使用滚动条 使用 DBGrid 控件

13.2 可视化数据管理器

Page 13: 第13章  数    据    库

www.themegallery.com13

(3) 事务方式 事务 : 指对数据库的数据所作的一系列改变。 开始事务 : 开始一个新的事务。 回滚当前事务 : 撤消自开始事务以来所作的一切改变。 提交当前事务 : 确认自开始事务以来对数据库所做的修

改,原有数据将不能恢复。2. 数据的增加、删除、修改 在数据库窗口中右击表名打开13.2.6 数据的查询1. 使用查询生成器 实用程序→查询生成器→保存查询 保存的查询名显示在数据库窗口中。

13.2 可视化数据管理器

Page 14: 第13章  数    据    库

www.themegallery.com14

显示查询 : 右击查询名称→打开 修改查询 : 右击查询名称→设计 在 SQL窗口显示 SQL语句。 • 通过修改 SQL语句来修改查询。 • 单击“ ”执行 按钮显示查询结果。 • “ ”单击 保存 按钮保存查询。 • “ ”单击 清除 按钮清除该 SQL语句。2. 使用 SQL 语句(1) Select 语句 Select [ALL|DISTINCT] < 字段名表 > From < 表名 > [Where < 条件 >] [Order By < 排序字段 > [ASC|DESC] …, ] 功能 : 从指定的表中选出满足条件的记录,记录中包含

指定的字段。

13.2 可视化数据管理器

Page 15: 第13章  数    据    库

www.themegallery.com15

ALL: 缺省值,显示查询到的所有记录。DISTINCT: 在显示查询结果中如果有多个相同的记录,只取其

中的一个。使用 DISTINCT 可以保证查询结果每一条记录的唯一性。

<表名 >: 指出所要查询的表,可以指定多个表,各表名之间用逗号隔开。

< 条件 >: 指出查询的条件。<字段名表 > : 指明要在查询结果中包含的字段名,具体形式为 :

表名 . 字段名,各项之间用逗号隔开,如果选择所有字段,则不用一一列出字段名,只需写成 : 表名 .*。

<排序字段 > : 将查询结果按该字段排序。 ASC: 指定按升序排序。 ESC: 指定按降序排序。

13.2 可视化数据管理器

Page 16: 第13章  数    据    库

www.themegallery.com16

例 : 选出学生基本信息表中所有男生记录,查询结果只包括班级、学号和姓名字段 :

Select 学生基本信息 . 班级 ,学生基本信息 . 学号 , 学 生基本信息 .姓名 From 学生基本信息

Where 学生基本信息 . 性别 = '男 ' 对于单个表的查询,可以省去各字段名前面的表名,以上 Select 语

句可以简写成: Select 班级 ,学号 ,姓名 From 学生基本信息 Where 性别 = '男 ' 例 : 显示学生基本信息表中男生的所有信息 : Select * From 学生基本信息 Where 性别 = '男 ' 例 :显示所有学生的学号、姓名和所在专业名、系名 : Select 学生基本信息 . 学号 ,学生基本信息 . 姓名 ,专业 . 专业名称 ,

系 . 系名 From 学生基本信息 ,专业 ,系 Where 学生基本信息 . 专业编号 =专业 . 专业编号 And 专业 . 系编号 =系 . 系编号

13.2 可视化数据管理器

Page 17: 第13章  数    据    库

www.themegallery.com17

(2) Insert 语句例 : 设新建一个“新系”表,包括“系编号”、“系名” ①Insert Into 系 Select 系编号 ,系名 From 新系 Where 新系 . 系编号 ='005' 表示从“新系”表中选择系编号为 005 的记录,并将其

添加到“系”表中。②Insert Into 系 Select 系编号 ,系名 From 新系 表示从“新系”表中选择所有记录,并将其添加到“系”

表中。③Insert Into 新系 ( 系编号 ,系名 ) Values ('007',

'城市建设 ') 表示向“新系”表中添加一条新记录,系编号字段值为

“ 007” ,系名字段值为“城市建设”。

13.2 可视化数据管理器

Page 18: 第13章  数    据    库

www.themegallery.com18

(3) Delete 语句 从一个或多个表中删除指定的记录。 例 : Delete From 新系 Where 系编号 >='005' 表示 从“新系”表中删除所有系编号大于“ 005” 的记录。(4) Update 语句 更改表中一个或多个行的列值。 例 : 设在某“职工工资”数据表中包含“姓名”、“性别”、

“基本工资”、“奖金”、“实发工资”字段。 给所有女职工增加 2%的奖金。使用语句 : Update 职工工资 Set 基本工资 =基本工资 * 1.02 Where 性别 = '女 ' 在增加奖金之后计算实发工资,使用语句 : Update 职工工资 Set 实发工资 =基本工资 +奖金

13.2 可视化数据管理器

Page 19: 第13章  数    据    库

www.themegallery.com19

13.2.7 数据窗体设计器 将数据库中的数据或查询结果显示在界面上。 在当前工程中建立数据窗体 : 实用程序→数据窗体设计器命令

13.2 可视化数据管理器

Page 20: 第13章  数    据    库

www.themegallery.com20

13.3 数据控件和数据绑定控件

数据控件 : Data 控件。 VB早期版本提供的用于访问数据库数据的控件。用它建立与数据库的关联,并确定记录集类型。

利用 Data 控件可以对数据库中的数据进行操作,却不能显示数据库中的数据

绑定控件 : 用于显示由数据控件所确定的记录集中的数据。绑定控件、数据控件和数据库之间的关系如下 :

绑定控件 数据控件 数据库

Page 21: 第13章  数    据    库

www.themegallery.com21

13.3.1 数据控件 (Data 控件 ): 内部控件1. 属性(1) DatabaseName: 数据源的名称及位置。 如 D:\mydb\ 学生 .mdb 。 (2) Connect: 连接的数据库类型。如“ Access”

(3) RecordSource: 数据来源,可以是数据表名称、 SQL 语句或是一个查询名。

(4) Recordset: 由 Data 控件所确定的记录集对象。(5) BOFAction: 指示 BOF 属性为 True时进行什么操作。 0-Move First 将第一个记录做为当前记录。 1–BOF 将当前记录位置定位在第一个记录之前。 记录集

的 BOF值保持 True ,此刻禁止 Data 控件上的Move Previous 按钮。

13.3 数据控件和数据绑定控件

Page 22: 第13章  数    据    库

www.themegallery.com22

(6) EOFAction: 指示 EOF 属性为 True时进行什么操作

0–MoveLast 保持最后一个记录为当前记录。 1–EOF 将当前记录定位在最后一个记录之后。记录集的

EOF值保持 True ,此刻禁止Data 控件上的MoveNext 按钮。

2-AddNew 移过最后一个记录时自动添加一个新记录。(7) ReadOnly: 只读 (True)(8) RecordsetType: 表、动态集、快照2. 方法(1) Refresh: 如果 DatabaseName 、 ReadOnly 、或

Connect 属性的设置值发生了改变,可以使用Refresh 方法来打开或重新打开数据库。

13.3 数据控件和数据绑定控件

Page 23: 第13章  数    据    库

www.themegallery.com23

(2)UpdateControls: 从记录集中取得当前记录,并且在绑定控件中显示当前的数据。

(3)UpdateRecord: 将被绑定控件的当前值保存到数据库中。

3. 事件(1) Error 代码中的错误可以捕获,由错误处理程序处理。 而其他对数据库的操作在错误时发生 Error 事件,可在该

事件过程中编写错误处理代码。(2) Reposition: 在一条记录成为当前记录之后产生。(3) Validate: 在移动到另一条记录之前、 Update 方法之前,以及进行 Delete 、 Unload 等操作之前产生。

13.3 数据控件和数据绑定控件

Page 24: 第13章  数    据    库

www.themegallery.com24

13.3.2 Recordset 对象的属性与方法 Data 控件的 Recordset 属性实际上是一个对象—

Recordset 对象。因此有其属性和方法。1. 属性(1) AbsolutePosition 指定 Recordset 对象当前记录的序号位置。 第一条记录的 AbsolutePosition值为 0 。 在第一条记录成为当前记录后具有明确值。 例 : 在数据绑定控件上显示第 6条记录 Data1.Recordset.AbsolutePosition = 5 Data1.UpdateControls

(2) Bookmark 返回唯一标识 Recordset 对象中当前记录的书签,或者将

Recordset 对象的当前记录设置为由有效书签所标识的记录。

13.3 数据控件和数据绑定控件

Page 25: 第13章  数    据    库

www.themegallery.com25

(3) BOF 、 EOF 当前记录在最后一个记录之后时, EOF值为 True 当前记录在第一个记录之前时, BOF值为 True(4) RecordCount: 指示当前记录的总数(5) NoMatch: 指示当使用 Seek 方法或 Find 方法进行

查找时,是否找到匹配的记录,当找到指定的记录时,值为 True ,否则,值为 False

(6) Fields: Fields 属性是一个集合。集合中包含所有Field( 字段 ) 对象。

每个 Field 对象对应于 Recordset 中的一列。 使用 Field 对象的 Value 属性可设置或返回当前记录的

数据。

13.3 数据控件和数据绑定控件

Page 26: 第13章  数    据    库

www.themegallery.com26

例 : 在窗体上显示当前记录的“姓名”字段的内容 : Print Data1.Recordset.Fields(" 姓名 ").Value 例 : 将当前记录的“班级”字段改成“道 99-3”: Data1.Recordset.Fields(" 班级 ").Value="道 9

9-3" 或简写成 : Data1.Recordset.Fields(" 班级 ") = " 道 99-3"(7) Index 属性 设置或返回表类型记录集中的当前索引名称,该索引名称必须是已经定义的一个索引。设置或返回的值为字符串类型。

例 :设置学生基本信息表的索引为名称为 xh 的索引。 Data1.Recordset.Index = "xh"

13.3 数据控件和数据绑定控件

Page 27: 第13章  数    据    库

www.themegallery.com27

2. 方法 (1)

MoveFirst;MoveLast;MoveNext;MovePrevious MoveFirst: 将当前行记录指针移到第一条记录 MoveLast: 将当前行记录指针移到最后一条记录 MoveNext: 将当前行记录指针移到前一条记录 MovePrevious: 将当前行记录指针移到后一条记录(2) Move: 将当前记录向前或向后移动指定的条数 格式 : Move n n 为正数时向后移动, n 为负数时向前移动。 (3) AddNew: 在记录集中添加一条新记录。

13.3 数据控件和数据绑定控件

Page 28: 第13章  数    据    库

www.themegallery.com28

例 : 给“学生基本信息”表添加一条新记录。 Data1.Recordset.AddNew Data1.Recordset.Fields(" 学号 ") = "980010104" Data1.Recordset.Fields(" 姓名 ") = " 刘小波 " Data1.Recordset.Fields(" 班级 ") = "建 98-01" Data1.Recordset.Fields(" 性别 ") = "男 " Data1.Recordset.Fields(" 专业编号 ") = "001" Data1.Recordset.Fields(" 出生日期 ") = #1/23/19

80# Data1.Recordset.Update

13.3 数据控件和数据绑定控件

Page 29: 第13章  数    据    库

www.themegallery.com29

(4) Update: 保存对 Recordset 对象的当前记录所做的所有更改。

(5) Delete 方法 : 删除当前记录。 删除当前记录后,在移动到其他记录之前已删除的记录将

保持为当前状态。一旦离开已删除记录,则无法再次访问它。

(6) Edit 方法 : 在对记录内容进行修改之前,需要使用该方法使记录处于编辑状态。

例 : 要将当前记录的“班级”字段改成“道 99-3” ,需要先使用 Edit 方法 :

Data1.Recordset.Edit Data1.Recordset.Fields(" 班级 ") = " 道 99-

3" Data1.Recordset.Update

13.3 数据控件和数据绑定控件

Page 30: 第13章  数    据    库

www.themegallery.com30

(7) FindFirst;FindLast;FindNext;FindPrevious 在指定的 Dynaset 或 Snapshot 类型的 Recordset

对象中查找与指定条件相符的记录,并使之成为当前记录。 如果要在表类型记录集中查找,需使用 Seek 方法。 FindFirst < 条件字符串 >: 查找满足条件的第一条记录。 FindLast < 条件字符串 >: 查找满足条件的最后一条记

录。 FindNext < 条件字符串 >: 从当前记录开始查找下一条满足条件的记录。

FindPrevious < 条件字符串 >:从当前记录开始查找上一条满足条件的记录

13.3 数据控件和数据绑定控件

Page 31: 第13章  数    据    库

www.themegallery.com31

(8) Seek 方法 在表类型记录集中查找满足条件的记录,使用之前必须先打开索引,要查找的内容为索引字段的内容。

Recordset.Seek < 比较字符 >, < 关键字 1>,< 关键字 2>…

比较字符为字符串类型 : < 、 <= 、 = 、 >= 、 > 可以有多个关键字 ,分别对应于当前索引字段。 Seek总是在当前记录集中找出满足条件的第一条记录,如

果在同一个记录集中多次使用同一个 Seek 方法,那么找到的总是同一条记录。

例如 :打开学生基本信息表的学号索引 ( 名称为 xh) ,查找学号为“ 990020203” 的记录 :

Data1.Recordset.Index = "xh" Data1.Recordset.Seek "=", "990020203"

13.3 数据控件和数据绑定控件

Page 32: 第13章  数    据    库

www.themegallery.com32

13.3.3 数据绑定控件 要使数据绑定控件能够显示数据库记录集中的数据,必须首先在设计时或在运行时设置这些控件的两个属性 :

DataSource 属性 : 返回或设置一个数据源,通过该数据源,数据绑定控件被绑定到一个数据库。

DataField 属性 : 返回或设置数据绑定控件将被绑定到的字段名。

13.3 数据控件和数据绑定控件

Page 33: 第13章  数    据    库

www.themegallery.com33

【例 13-1】利用 “学生”数据库中的数据,用文本框显示“学生基本信息”表中的班级、学号、姓名、性别。使用命令按钮实现记录的向前、向后移动。 设计界面如下图所示。

Text1 Text2

Text3 Text4

13.3 数据控件和数据绑定控件

Page 34: 第13章  数    据    库

www.themegallery.com34

“ 上一个”按钮 : 显示上一个记录,当显示到第一个记录时,继续单击“上一个”按钮,则该按钮变为无效,而把焦点定位到“下一个”按钮。

“下一个”按钮 : 显示下一个记录,当显示完最后一个记录后,再单击“下一个”按钮,则该按钮无效,焦点定位到“上一个”按钮。

文本框 : 用于浏览数据,不允许修改。运行时不显示Data 控件。

13.3 数据控件和数据绑定控件

Page 35: 第13章  数    据    库

www.themegallery.com35

“ 上一个”按钮 : 显示上一个记录,当显示到第一个记录时,继续单击“上一个”按钮,则该按钮变为无效,而把焦点定位到“下一个”按钮。

“下一个”按钮 : 显示下一个记录,当显示完最后一个记录后,再单击“下一个”按钮,则该按钮无效,焦点定位到“上一个”按钮。

文本框 : 用于浏览数据,不允许修改。运行时不显示Data 控件。

13.3 数据控件和数据绑定控件

Page 36: 第13章  数    据    库

www.themegallery.com36

控件名 属性名 属性值

Data1

DatabaseName

E:\mydb\ 学生 .mdb

RecordSource 学生基本信息Visible False

Text1 Datasource Data1DataField 班级Locked True

Text2 Datasource Data1DataField 学号Locked True

Text3Datasource Data1DataField 姓名Locked True

Text4Datasource Data1DataField 性别Locked True

13.3 数据控件和数据绑定控件

Page 37: 第13章  数    据    库

www.themegallery.com37

“ 上一个”按钮 Command1 的 Click 事件过程如下 :Private Sub Command1_Click() Command2.Enabled = True If Data1.Recordset.BOF Then Command1.Enabled = False Command2.SetFocus Else Data1.Recordset.MovePrevious End IfEnd Sub

13.3 数据控件和数据绑定控件

Page 38: 第13章  数    据    库

www.themegallery.com38

“下一个”按钮 Command2 的 Click 事件过程如下 : Private Sub Command2_Click() Command1.Enabled = True If Data1.Recordset.EOF Then Command2.Enabled = False Command1.SetFocus Else Data1.Recordset.MoveNext End If End Sub

13.3 数据控件和数据绑定控件

Page 39: 第13章  数    据    库

www.themegallery.com39

【例 13-2】利用 “学生”数据库中的数据,使用表格控件浏览数据库中的数据。在表格中显示系名称、专业名称、班级、学号、姓名,性别。设计步骤如下:(1) 先生成一个查询。查询名称为“综合信息” Select 系 . 系名 ,专业 . 专业名称 ,学生基本信息 . 班

级 , 学生基本信息 . 学号 ,学生基本信息 . 姓名 , 学生基本信息 . 性别 From 专业 ,系 ,学生基本信息 Where 专业 . 系编号 =系 . 系编号 And 专业 . 专业编号 =学生基本信息 . 专业编号(2) 打开“部件”对话框,选择Microsoft FlexGrid

Control 6.0 ,添加 MSFlexGrid 。并添加到窗体上

13.3 数据控件和数据绑定控件

Page 40: 第13章  数    据    库

www.themegallery.com40

(3) 向窗体上添加一个 Data 控件 Data1 。(4) 设置Data 控件的以下属性 : DatabaseName —E:\Mydb\ 学生 .mdb RecordSource —综合信息(5) 设置MSFlexGrid 的以下属性 : DataSource—Data1 FixCol—0(没有左侧的固定列 )运行结果如下 :

MSFlexGrid

13.3 数据控件和数据绑定控件

Page 41: 第13章  数    据    库

www.themegallery.com41

13.4 使用 ADO 访问数据

ADO: ActiveX Data Objects Microsoft 的一个最新的数据访问技术 通过 OLE DB 访问数据13.4.1 ADO 对象模型 使用 ADO 对象之前,首先要向当前工程添加 ADO 的对象库。添加方法 : 工程引用打开“引用”对话框选择“ Microsoft ActiveX Data Object 2.0 Library”选项。

Page 42: 第13章  数    据    库

www.themegallery.com42

ADO 对象模型定义了一个可编程的分层对象集合,如下图所示 :

Connection 对象

Error 集合 Error 对象

Command 对象

Field 对象

Parameter 集合 Parameter 对象

Recordset 对象

Field 集合

13.4 使用 ADO 访问数据

Page 43: 第13章  数    据    库

www.themegallery.com43

1. Connection 对象 Connection 对象用于连接数据源。 例 : 使用以下语句连接并打开一个 Access 数据库 “学生 .

mdb” 。 ' 建立一个 Connection 对象 Mycon

Dim Mycon As New ADODB.Connection ' 定义 Mycon 对象的 ConnectionString 属性 Mycon.ConnectionString ="provider=Microsoft

jet OLEDB 3.51;" &"data source=D:\mydb\ 学生 .mdb"

' 按指定的连接打开数据库 Mycon.Open

打开数据库之后,接下来就可以使用 Recordset 对象实现对数据库的各种操作。

13.4 使用 ADO 访问数据

Page 44: 第13章  数    据    库

www.themegallery.com44

2. Recordset 对象 同样可以对 ADO 的 Recordset 对象进行数据记录的移动操作、数据的搜索、记录的添加、删除、更新等,也可以使用 BOF 和 EOF 来判断记录的位置。【例 13-3】打开学生数据库“ D:\mydb\ 学生 .mdb” ,显示学生数据库中所有学生的姓名。(1) 添加 “ Microsoft ActiveX Data Object 2.0 Library”(2) 编写代码 : Private Sub Form_Load() ' 定义 Mycon 为 Connection 对象 Dim Mycon As New ADODB.Connection ' 定义 MyRS 为 Recordset 对象 Dim MyRS As New ADODB.Recordset

13.4 使用 ADO 访问数据

Page 45: 第13章  数    据    库

www.themegallery.com45

Mycon.ConnectionString = _

"provider=Microsoft.jet.OLEDB.3.51;" & _

"data source=D:\mydb\ 学生 .mdb"

Mycon.Open ' 打开数据库 ' 打开一个由查询指定的记录集 MyRS.Open "select * from 学生基本信息 ", Mycon

MyRS.MoveFirst ' 移动到记录集的第一条记录 Show

Do While Not MyRS.EOF

' 打印记录集中当前记录的“姓名”字段 Print MyRS.Fields(" 姓名 ") MyRS.MoveNext ' 移动到记录集的下一条记录 Loop

End Sub

13.4 使用 ADO 访问数据

Page 46: 第13章  数    据    库

www.themegallery.com46

3. Command 对象 用于定义将对数据源执行的命令,主要用于提供一个通过

SQL命令来操纵数据库的功能。【例 13-4】将上例改写成用 Command 对象实现 : Private Sub Form_Load() Dim Mycon As New ADODB.Connection Dim MyRS As New ADODB.Recordset ' 定义 Mycom 为 Command 对象 Dim Mycom As New ADODB.Command

Mycon.ConnectionString = _ "provider=Microsoft.jet.OLEDB.3.51;" & _ "data source=D:\mydb\ 学生 .mdb" Mycon.Open ' 打开数据库

13.4 使用 ADO 访问数据

Page 47: 第13章  数    据    库

www.themegallery.com47

' 定义一个查询字符串 strSQL = "select * from 学生基本信息 " ' 指定 Command 对象属于 Mycon连接 Set Mycom.ActiveConnection = Mycon ' 指定 Command 对象的命令文本为 strSQL Mycom.CommandText = strSQL ' 执行在 CommandText 属性中指定的查询 Set MyRS = Mycom.Execute MyRS.MoveFirst

' 移动到第一条记录 Show Do While Not MyRS.EOF Print MyRS.Fields(" 姓名 ") MyRS.MoveNext LoopEnd Sub

13.4 使用 ADO 访问数据

Page 48: 第13章  数    据    库

www.themegallery.com48

4. Error 对象 任何涉及 ADO 对象的操作都可能产生一个或多个提供者错误。产生错误时,可以将一个或多个 Error 对象置于Connection 对象的 Errors 集合中。其他 ADO 操作产生错误时,将清空 Errors 集合,并且将新的 Error 对象置于 Errors 集合中。5. Field 对象 Fields 集合包含 Recordset 对象的所有 Field 对象。每个 Field 对象对应于 Recordset 中的一列。使用Field 对象的 Value 属性可以设置或返回当前记录的数据。使用 Name 属性可返回字段名。

13.4 使用 ADO 访问数据

Page 49: 第13章  数    据    库

www.themegallery.com49

【例 13-5】在例 13-4 的基础上增加一个 Field 对象,将程序改成:Private Sub Form_Load() Dim Mycon As New ADODB.Connection Dim MyRS As New ADODB.Recordset Dim Mycom As New ADODB.Command Dim f As ADODB.Field ' 定义 f 为 Field 对象 Mycon.ConnectionString = _ "provider=Microsoft.jet.OLEDB.3.51;" & _ "data source=D:\mydb\ 学生 .mdb" Mycon.Open strSQL = "select * from 学生基本信息 " Set Mycom.ActiveConnection = Mycon Mycom.CommandText = strSQL Set MyRS = Mycom.Execute

13.4 使用 ADO 访问数据

Page 50: 第13章  数    据    库

www.themegallery.com50

MyRS.MoveFirst Show Do While Not MyRS.EOF For Each f In MyRS.Fields Debug.Print " " & f.Name & " = " & f.Value Next f MyRS.MoveNext Loop End Sub程序中使用 f.Name显示字段名称 使用 f.Value显示字段值。

13.4 使用 ADO 访问数据

Page 51: 第13章  数    据    库

www.themegallery.com51

运行该程序,立即窗口显示的部分内容如下图所示。

13.4 使用 ADO 访问数据

Page 52: 第13章  数    据    库

www.themegallery.com52

13.4.2 Adodc 控件 Adodc 控件把 ADO 的许多功能结合在一个可视的控件

中。在可视的环境上就可以直接完成许多操作。1. 添加 : 工程部件在“控件”选项卡上选择“ Microsoft

ADO Data Control 6.0(OLEDB)” 选项。2. 属性 在属性窗口中直接设置其属性 在其属性页中进行设置。(1) ConnectionString: 包含与数据库连接的相关信息。 如 : "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security

Info=False; Data Source=D:\mydb\ 学生 .mdb"

13.4 使用 ADO 访问数据

Page 53: 第13章  数    据    库

www.themegallery.com53

(2) RecordSource: 用于确定具体可以访问的数据,这些数据构成了记录集对象 Recordset 。该属性值可以是一个表名称、一个存储查询或一个查询字符串。

3. 事件和方法 ADO 控件具有和 Data 控件完全一样的事件和方法。对记

录集的操作方法也一样。

13.4 使用 ADO 访问数据

Page 54: 第13章  数    据    库

www.themegallery.com54

13.5 应用举例

【例 13-6】设计学生信息管理系统,运行时主界面如下图所示,主界面包括两个选项卡,图 a 为“数据查询”选项卡,用于按指定方式查询信息,图b 为“数据维护”选项卡,用于对指定的表进行增、删、改。见 P261~266

a) b)

Page 55: 第13章  数    据    库

www.themegallery.com55

本 章 小 结

1. 数据库的基本概念 数据库 (DB); 数据库管理系统 (DBMS)

表 ; 表名称 ; 关系数据库 ; 数据库名称 记录 ; 字段 关键字 ; 表间的关联 ; 外部键 ; 索引 数据访问对象模型 结构化查询语言 (SQL)

2. 使用可视化数据管理器 新建数据库 ;打开数据库 ; 添加表 数据的增加、删除、修改 数据的查询 : 使用查询生成器 ; 使用 SQL 语句 SQL 语句 :Select;Insert;Delete;Update

数据窗体设计器

Page 56: 第13章  数    据    库

www.themegallery.com56

3. 数据控件和数据绑定控件(1)Data 控件 属性 : DatabaseName; Connect; RecordSource; Recordset; BOFAction; EOFAction; ReadOnly;RecordsetType 方法 : Refresh;UpdateControls;UpdateRecord 事件 : Error;Reposition;Validate(2)Recordset 对象 属性 : AbsolutePosition; Bookmark; BOF; EOF; RecordCount; NoMatch; Fields; Index 方法 : MoveFirst; MoveLast; MoveNext; MovePrevious; Move; AddNew; Update; Delete;Edit; FindFirst; FindLast; FindNext;

FindPrevious; Seek(3) 数据绑定控件 : DataSource 属性 ;DataField 属性

本 章 小 结

Page 57: 第13章  数    据    库

www.themegallery.com57

4. 使用 ADO 访问数据(1) ADO 对象模型 Connection 对象 ;Recordset 对象 ; Command 对象 ;Error 对象 ;Field 对象(2) Adodc 控件 属性 : ConnectionString; RecordSource 事件和方法 : 具有和 Data 控件完全一样的事件和方法。

对记录集的操作方法也一样。

本 章 小 结