第 10 章数据库应用基础

Post on 02-Jan-2016

100 Views

Category:

Documents

5 Downloads

Preview:

Click to see full reader

DESCRIPTION

第 10 章数据库应用基础. 10.1 数据库概述 10.2 VB 数据库访问 10.3 记录集对象 10.4 综合应用. 10.1 数据库概述. 数据库 以一定的组织方式将相关的数据组织在一起,存放在计算机外存储器,能为多个用户共享,与应用程序彼此独立的一组数据的集合。 Visual Basic 支持多种类型的数据库 如 Access 数据库、 FoxPro 数据库、 Microsoft Excel 、 SQL Server 和 Oracle 等。. 表. 数据库. 10.1.1 关系型数据库模型. - PowerPoint PPT Presentation

TRANSCRIPT

1

第 10 章数据库应用基础 10.1 数据库概述10.2 VB 数据库访问 10.3 记录集对象 10.4 综合应用

2

10.1 数据库概述 数据库 以一定的组织方式将相关的数据组织在一起,存放在计算机外存储器,能为多个用户共享,与应用程序彼此独立的一组数据的集合。

Visual Basic 支持多种类型的数据库如 Access 数据库、 FoxPro 数据库、 Microsoft Excel 、 SQL Server 和 Oracle 等。

3

10.1.1 关系型数据库模型 关系型数据库模型将数据用表的集合来表示。通过建立简单表之间的关系来定义结构,而不是根据数据的物理存储方式建立数据中的关系。不管表在数据库文件中的物理存储方式如何,都可以把它看作一组行和列。

数据库 表

4

关系型数据库

表是有关信息的逻辑组,行被称为记录,列则被称为字段。

主键

记录

字段

5

10.1.2 使用 SQL 查询数据库

结构化查询语言 (Structure Query Language ,SQL) 是操作关系数据库的标准语言。通过 SQL命令,可以从数据库的多个表中获取数据,也可对数据进行更新操作。 SQL 的主要语句:

语 句 . 分类 描 述SELECT 数据查询 查找满足特定条件的记录DELETE 数据操作 从数据表中删除记录INSERT 数据操作 向表中插入一条记录UPDATE 数据操作 用来改变特定记录和字段的值

6

SELECT 语句 SELECT 语句的基本语法形式

SELECT 目标表达式列表 FROM 表名 [ WHERE 查询条件 ][ GROUP BY 分组字段 HAVING 分组条件 ] [ ORDER BY 排序关键字段 [ASC|DESC] ]

它包含 4 部分,其中 SELECT 和 FROM 子句是必须的,通过使用 SELECT 语句返回一个记录集。

例 在学生基本情况表中查询物理系的学生情况:SELECT * FROM 基本情况 WHERE 专业 = " 物理 "

7

SELECT 语句 - 输出表达式 目标表达式为查询结果要显示的字段清单

( 字段间用逗号分开 ) 。数据的显示顺序由字段清单的顺序决定。

可用星号 * 代表所有字段; 可用 AS 短语指定字段别名; 可通过构造表达式对原始数据进行复杂的运算处理,产生查询结果。

例如,根据出生年月计算每个学生的年龄SELECT 姓名 , (Year(Date())-Year( 出生年月 )) AS 年龄 FR

OM 基本情况

8

SELECT 语句 - 查询条件 WHERE 子句用于限制记录的选择

例如,查询 1985-01-01 到 1986-12-31 之间出生的学生:SELECT * FROM 基本情况 WHERE 出生年月 BETWEEN #19

85-01-01# AND #1986-12-31# 要枚举出若干项进行查询,使用运算符 IN

例如,查询物理系和数学系的学生数据:SELECT * FROM 基本情况 WHERE 专业 IN (" 物理 ", " 数

学 ") 等价于: SELECT * FROM 基本情况 WHERE 专业 = " 物理 " OR 专业 = " 数学 "

9

SELECT 语句 - 合计函数 合计函数用于对记录集进行统计

例如,统计物理系学生的人数:SELECT COUNT(*) AS 学生人数 FROM 基本情况 WHERE 专业 = “ 物

理”COUNT(*) 在统计时包含值为空值的记录COUNT( 表达式 ) 统计时忽略表达式值为空值的记录

返回指定字段中的最小值MIN

返回指定字段中的最大值MAX

返回特定字段中所有值的总和SUM

返回选定记录的个数COUNT

获得特定字段中的值的平均数AVG

描 述合计函数

10

SELECT 语句 - 分组 GROUP BY 子句将指定字段列表中有相同值的记录合并成一条记录。

例如,计算每个学生各门课程平均分:SELECT 学号 , AVG( 成绩 ) AS 平均分 FROM 成

绩表 GROUP BY 学号 要对分组后的数据进行过滤,可在 GROUP

BY 子句后结合 HAVING 子句在分组中选择。例如,查询平均分在 80 分以上的学生:

SELECT 学号 , AVG( 成绩 ) AS 平均分 FROM 成绩表 GROUP BY 学号 HAVING AVG( 成绩 )>=80

11

SELECT 语句 - 排序 ORDER BY 子句决定了查询结果的排列顺序

在 ORDER BY 子句中,可以指定一个或多个字段作为排序关键字, ASC 选项代表升序, DESC代表降序。

12

SELECT 语句图解

13

SELECT 语句 - 多表连接 若查询的数据分布在多个表中,则必须建立连接查询:

SELECT 目标表达式列表 FROM 表 1, 表 2 WHERE 表 1. 字段 = 表 2. 字段

例如,学生成绩表中只有学号,如何在查看学生成绩的同时能够直观地看到学生姓名?这就要在两表之间建立连接。SQL 语句如下:

SELECT 基本情况 . 姓名 , 成绩表 .* FROM 基本情况 , 成绩表 WHERE 成绩表 . 学号 = 基本情况 . 学号

14

10.2 VB 数据库访问 10.2.1 ADO 数据控件使用基础

数据库应用程序引例 例 10.1 设计一个窗体,用 DataGrid 控件显示 Stud

ent.mdb 数据库中“基本情况”表的内容。

15

ADO 数据控件使用 VB 采用 ADO(ActiveX Data Objects) 数据访问技术,编写本程序,需要完成以下工作:

在窗体上添加 ADO 数据控件 使用 ADO 连接对象建立与数据提供者之间的连接 使用 ADO 命令对象操作数据源,从数据源中产生记录集并存放在内存中 建立记录集与数据绑定控件的关联,在窗体上显示数据。

16

数据源连接设置操作

右单击 ADO控件,选择快捷菜单 ADODC 属性命令,打开 ADO 控件属性页窗

右单击 ADO控件,选择快捷菜单 ADODC 属性命令,打开 ADO 控件属性页窗

单击

连接数据源的方式

17

选择提供程序

选择提供程序

18

指定访问的数据库

指定要访问的数据库文件

19

连接对象重要属性 连接对象最重要的属性是 ConnectionString ,它是一个字符串,包含了用于与数据源建立连接的相关信息。典型的 ConnectionString 属性值如下:

Provider = Microsoft.Jet.OLEDB.4.0; Data Source = Student.mdb

Provide ,指定连接提供程序的名称; Data Source ,用于指定要连接的数据源文件。

20

VB 数据库访问过程

21

数据访问过程 应用程序通过连接对象与数据源建立连接 ( 不同类型的数据库使用各自的连接提供程序 )

命令对象发出 SQL 命令从数据源中获取数据 数据集对象用来保存所查询到的数据记录 应用程序对记录集进行操作

记录集表示内存中来自基本表或命令执行结果的集合,也由记录 ( 行 ) 和字段 ( 列 ) 构成,可以把它当作一个数据表来进行操作

22

10.2.2 数据绑定 什么是数据绑定?

数据绑定是一个过程,即在运行时自动为与记录集中的元素关联的控件设置属性。以便通过控件显示数据集中的数据。

23

数据绑定 Windows 窗体有简单数据绑定和复杂数据绑定简单数据绑定

简单数据绑定就是将控件绑定到单个数据字段。每个控件仅显示数据集中的一个字段值。最常用的简单数据绑定是将数据绑定到文本框和标签。

在设计或运行时设置控件属性建立绑定 : DataSource :指定 ADO 数据控件 DataField :设置记录集中有效的字段

24

简单数据绑定 例 10.2 数据绑定的操作过程 界面设计

建立连接和产生记录集 设置绑定属性

25

复杂数据绑定 复杂数据绑定允许将多个数据字段绑定到一个控件,同时显示记录源中的多行或多列。支持复杂数据绑定的常用控件:

DataGrid 数据网格 MSHFlexGrid 数据网格 DataList 数据列表框 DataCombo 数据组合框

26

复杂数据绑定 例10.3复杂数据绑定的操作过程

界面设计 建立连接和产生记录集 数据绑定

本例 DataGrid 控件要绑定不同的表,故需要通过代码设置控件的 DataSource 属性。

程序代码

Private Sub Command1_Click()

Adodc1.RecordSource = " 基本情况 " Adodc1.RefreshEnd Sub

Private Sub Command2_Click()

Adodc1.RecordSource = " 成绩表 " Adodc1.RefreshEnd Sub

27

复杂数据绑定 例 10.4 使用 SQL 语句选择数据表部分数据构成记录集。在网格上绑定部分字段,需要对数据网格布局进行编辑。

28

10.3 记录集对象10.3.1 浏览记录集

1. AbsoloutPostion 属性 返回当前记录指针值,从 1 到 Recordset 对象所含

记录数。2. BOF 和 EOF 的属性

BOF判定记录指针是否在首记录之前, EOF判定记录指针是否在末记录之后。

如果 BOF 和 EOF 的属性值都为 True ,则记录集为空。

29

3. RecordCount 属性 对 Recordset 对象中的记录计数,该属性为只读属性。

4. Find方法 在 Recordset 对象中查找与指定条件相符的一条记录,

并使之成为当前记录。如果找不到,则记录指针指在记录集末尾。

Recordset.Find 搜索条件 [,[位移 ] , [搜索方向 ], [开始位置 ]]

30

5. Move方法组 Move方法可代替对数据控件对象的 4 个箭头按钮的操

作遍历整个记录集。(1) MoveFirst方法移至第 1 条记录。(2) MoveLast方法移至最后一条记录。(3) MoveNext方法移至下一条记录。(4) MovePrevious方法移至上一条记录。(5) Move [n] 方法向前或向后移 n 条记录。

例 10.5 用命令按钮代替数据控件对象的 4 个箭头按钮的功能 , 使用 Find 方法查找记录

31

MoveNext

MoveLast

MoveFirst

MovePrevious

Adodc1.Recordset. Find " 学号 = ' 500011' "

计算机丁保华500011

………

物理李明 500201

数学庄前500102

专业姓名学号

EOF

BOF

记录集属性方法小结

32

10.3.2 记录集的编辑 1 .数据编辑方法

记录集中数据的增、删、改涉及到 4 个方法: AddNew 方法 在记录集中增加入一个新行 Delete 方法 删除记录集中的当前记录 Update 方法 确定修改并保存到数据源中 CancelUpdate 方法 取消未调用 Update方法前对

记录所做的所有修改

33

增加新记录 2 .增加新记录

(1) 调用 AddNew 方法增加一条空记录(2) 给新记录各字段赋值 ( 可以通过绑定控件直接输入,或使用程序代码给字段赋值,格式为: Recordset.Fields(" 字段名 ") = 值

(3) 调用 Update 方法,确定所做的添加,将缓冲区内的数据写入数据库

34

删除记录 3. 删除记录

(1) 定位被删除的记录使之成为当前记录(2) 调用 Delete方法(3) 移动记录指针注意:使用 Delete方法当前记录立即删除,不加任何的警告或者提示。删除一条记录后,绑定控件仍旧显示该记录的内容。因此,必须移动记录指针刷新绑定控件

35

修改记录 4. 修改记录

当改变数据项的的内容时, ADO 自动进入编辑状态,在对数据编辑后,只要改变记录集的指针或调用 Update方法,即可确定所做的修改。

例 11.6 在例 10.5 的基础上加入“新增”、“删除”、“更新”、“放弃”和“结束” 5 个按钮,通过对按钮的编程建立增、删、改功能

36

计算机丁保华500011

………

物理李明 500201

数学庄前500102

专业姓名学号

Adodc1.Recordset. AddNew 增加记录

数据库

UpData填入新数据

编辑记录 删除记录• 给各字段赋值 调用 Delete 方法 • 调用 Update 方法 移动记录指针

计算机丁保华500011

………

物理李明500201

数学庄前500102

专业姓名学号

数据修改小结

37

10.3.3 查询与统计 通过 SQL 语句从数据源中获取信息,查询条件由 Select 语句的 Where 短语构成,使用 And 与 Or 运算符组合出复杂的查询条件。模糊查询使用运算符 Like ,百分号%代替任意个不确定的内容,用下划线 _代替一个不确定的内容。例如,姓名 Like ' 张%' 将查询所有张姓的人员

例 10.7 根据输入的专业名称,在网格内显示 Student.mdb 数据库中该专业所有学生信息

38

10.3.3 查询与统计 例 10.8 使用数据列表框或数据组合框提供专业名称,实现查询

例 10.9 使用 SQL 的函数和分组功能,统计各专业的人数、年龄分布。

39

10.3.4 BLOB 数据处理 二进制大型对象 (Binary Large Object , B

LOB) 是指任何需要存入数据库的随机大块字节流数据,例如图形或声音文件。数据库中存放 BLOB 的字段必须是二进制类型 ( 在Access 中为 OLE 对象 ) ,在 ADO 中如何处理 BLOB 类型的数据,把图形作为数据库的一个字段值存放在数据库,并能显示图形数据 ?

40

BLOB 数据处理 AppendChunk方法将 BLOB 数据写入数据库 ,语法格式:

ADO 对象 .Recordset.Fields( 字段 ).AppendChunk Data

用二进制访问方式打开 BLOB 数据文件 定义一个与文件长度相同大小的字节型数组 将文件保存到数组 使用 ADO 对象的 AppendChunk 方法写入数据库

例 10.10 选择指定图形文件将数据写入到数据库,在浏览记录时显示照片。

41

10.4 综 合 应 用 例 10.11 设计一个多媒体信息管理系统,要求能将多媒体数据保存在数据库,具有记录的增加、删除、统计和多媒体信息重现等功能。

例 10.12 设计一个飞行航班信息查询系统,要求具有记录的增加、编辑、删除、查询等功能

42

思考题1. 什么是关系型数据库?2. 简述 SQL 中常用的 Select 语句的基本格式和用法。3. 简述使用 ADO 数据控件访问数据库的步骤。4. 什么是数据绑定?怎样实现数据绑定?5. 在 ADO 中如何用代码实现数据连接,创建一个记录集对象?

6 .在 ADO 中如何用代码实现记录指针的移动?7. 如何实现对记录集的增、删、改功能?8. 如果要显示数据表内的照片,可使用哪些控件?

top related