【VB开源代码栏目提醒】:网学会员鉴于大家对VB开源代码十分关注,论文会员在此为大家搜集整理了“VB程序设计第2版第13章 - 编程语言”一文,供大家参考学习
第十三章 数 据 库 1 本章要点: 数据库的基本概念 可视化数据管理器 使用ADO数据控件访问数据库 第十三章 数 据 库 2 引言 随着科学技术和社会
经济的飞速发展人们掌握的信息量急剧增加要充分地开发和利用这些信息资源就必须有一种新技术能对大量的信息进行识别、存储、处理与传播。
随着计算机软硬件技术的发展20世纪60年代末数据库技术应运而生并从70年代起得到了迅速的发展和广泛的应用。
数据库技术主要研究如何科学地组织和存储数据如何高效地获取和处理数据。
数据库技术作为数据管理的最新技术目前已广泛应用于各个领域。
第十三章 数 据 库 3 13.1 数据库的基本概念 数据库DataBaseDB--以一定方式组织并存储在一起的相互有关的数据的集合。
数据库管理
系统DBMS—用户与数据库之间的接口可以实现对数据的组织和管理。
数据的组织: 按组织方式的不同分为三种模型相应地有关系数据库层次数据库网状数据库。
关系数据库是目前使用最多的数据库。
数据的管理: 提供对数据库使用和加工的操作如对数据库的建立、修改、检索、计算、统计、删除等。
VB可以处理多种数据库: 如Access、FoxPro、DataBase、Excel、Paradox等格式的数据库。
第十三章 数 据 库 4 第十三章 数 据 库 5 1. 表 将相关的数据按行和列的形式组织成二维表格即为表表通常用于描述某一个实体。
表名称 每个表有一个名称。
一个数据库可以有一个或多个表各表之间存在着某种关系。
数据库名称如ACCESS数据库文件扩展名为.mdb 13.1.1 关系数据库的结构 第十三章 数 据 库 6 例如: “学生.mdb” 数据库 1 “学生基本信息” 表 学号 姓名 性别 班级 出生日期 专业编号 980010101 张涛 男 建98-01 80-03-24 001 980010102 李明 男 建98-01 80-11-21 001 …… …… …… …… …… …… 990050103 王新 女 网99-01 80-12-09 005 2“专业” 表 专业编号 专业名称 系编号 001 建筑结构 001 002 道桥工程 001 …… …… …… 006
软件工程 003 3“系” 表 系编号 系名称 001
土木工程 002 城市建设 003
计算机 第十三章 数 据 库 7 2. 表的结构 记录: 表中的每一行称为一个记录。
同一个表不应有相同的记录。
字段: 表中的每一列称为一个字段。
字段名: 每个字段一个名称。
字段类型: 每个字段一种类型。
数据项记录中的某字段值称 表的结构按字段定义。
显然在一个表中记录的顺序和字段顺序不影响表中的数据信息。
第十三章 数 据 库 8 表名 字段名 字段类型 字段长度 学生基本信息 学号 Text 9 姓名 Text 10 性别 Text 2 班级 Text 7 出生日期 Date 8 专业编号 Text 3 专业 专业编号 Text 3 专业名称 Text 20 系编号 Text 3 系 系编号 Text 3 系名称 Text 20 例如前面的各表可以定义如下 第十三章 数 据 库 9 3. 表中的关键字 候选关键字: 如果表中的某个字段或多个字段组合能唯一地确定一个记录称该字段或多个字段组合为侯选关键字。
侯选关键字可以有多个。
如“学生基本信息”表中的“学号”可以作为侯选关键字因为对于每个学生来说学号是唯一的。
一个表可以有多个侯选关键字但只能有一个关键字作主关键字。
关键字中的每一个值必须是唯一的且不能为空值Null。
第十三章 数 据 库 10 4. 表间的关联 按照某一个公共字段建立的一个表中记录同另一个表中记录之间的关系。
如“学生基本信息”表与“专业”表之间通过“专业编号”字段建立关系。
这种关系分为一对一、一对多或多对一、多对多关系。
常用的是一对多或多对一关系例如对于“专业”表中的每一个专业编号在“学生基本信息”表中都有多条记录具有相同的专业编号因此“专业”表中的专业编号与“学生基本信息”表的专业编号之间是一对多的关第十三章 数 据 库 11 5. 外部键 设某个字段或字段的组合F不是表A的关键字如果F与另一个表B的主关键字相对应则称F为表A的外部键。
外部键与主关键字通常是多对一的关系。
例如“学生基本信息”表中的“专业编号”可以定义为外部键它与“专业”表中的“专业编号”主关键字相关联。
外部键的值应当是主关键字值的子集或者为空Null值。
例如“学生基本信息”表中的专业编号只能是专业表中已经存在的专业编号或者是空值。
第十三章 数 据 库 12 6. 索引 索引是为了加速查找引入的。
索引和一本书的目录类似在书本的目录上有章节名称和页号在索引文件上相应地也有索引关键字和指针。
索引关键字按特定的顺序排序指针指向表中的记录。
查找数据时数据库
管理系统先从索引文件上根据索引关键字找到信息的位置指针再根据指针从表中读取数据。
索引关键字或索引字段既可以是一个字段也可以是多个字段的组合。
在一个表中可以建立多个索引但只能有一个主索引主索引的索引关键字的值在整个表中不允许出现重复且不能为空值。
第十三章 数 据 库 13 例如要按学生的学号快速检索学生基本信息可以在―学生基本信息‖表中以―学号‖为索引关键字建立一个索引取名为―xh‖。
通常只有当被索引的字段中的数据经常被查询时才需要对表创建索引。
索引将占用磁盘空间并且降低添加、删除和修改记录的速度。
在多数情况下索引所带来的检索数据的速度优势将大大超过它的不足之处然而如果应用程序非常频繁地更新数据或磁盘空间有限那么最好限制索引的数量。
第十三章 数 据 库 14 在
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.2 数据访问对象模型 第十三章 数 据 库 15 利用结构化查询语言Structured Query LanguageSQL可以实现对数据库的检索、排序、统计、修改等多种操作。
例如下面是一个用来查询信息的SQL语句 Select 系.系名称学生基本信息.学号 学生基本信息.姓名学生基本信息.班级 From 专业系学生基本信息 Where 学生基本信息.班级 建98-01 And 学生基本信息.专业编号专业.专业编号 And 专业.系编号系.系编号 13.1.3 结构化查询语言SQL 第十三章 数 据 库 16 13.2 可视化数据管理器 Visual Basic提供了一个非常方便的数据库操作工具即可视化数据管理器Visual Data Manager使用可视化数据管理器可以方便地建立数据库、添加表、对表进行修改、添加、删除、查询等操作。
第十三章 数 据 库 17 13.2.1 启动可视化数据管理器 打开方法外接
程序→可视化数据管理器 子窗口区 菜单栏 工具栏 状态栏 第十三章 数 据 库 18 13.2.2 新建数据库 文件→ 新建→Microsoft Access→Verson 7.0 MDB →确定数据库文件保存位置及名称 显示: 数据库窗 口 SQL语句窗口 数据库窗口: 列出数据库的常用属性。
SQL语句窗口: 输入、执行、保存SQL语句。
第十三章 数 据 库 19 13.2.3 打开数据库 打开方法: 文件→打开数据库→Microsoft Access 第十三章 数 据 库 20 13.2.4 添加表和修改表 1在数据库窗口快捷菜单中选择“新建表”项 2在打开的“表结构”对话框添加字段和索引 第十三章 数 据 库 21 13.2.5 添加、删除和修改数据 表类型 动态集类型 快照类型 使用Data控件 不使用Data控件 使用DBGrid控件 开始事务 回滚当前事务 提交当前事务 1. “VisData‖窗口的工具栏 用于确定记录集的类型和数据的显示方式。
第十三章 数 据 库 22 1 记录集类型按钮组 记录集对象Recordset对象 指来自基本表或查询结果的记录全集。
VB使用记录集对象访问数据库中的记录。
有三种记录集类型: 数据管理器窗口的工具栏提供了三个按钮用于确定对记录集的访问方式。
1表类型Table: 直接更新数据表中的数据。
2动态集类型Dynaset: 更新操作先在内存中进行。
3快照类型Snapshot: 数据仅供读取。
第十三章 数 据 库 23 2 数据显示按钮组 在数据库窗口中用鼠标右击表选择“打开”命令可以打开一个数据编辑窗口在该窗口中可以进行表数据的添加、编辑等操作。
数据显示按钮组用于控制在数据编辑窗口中显示数据的形式。
1在新窗体上使用Data控件使用Data控件来控制记录集的滚动。
2在新窗体上不使用Data控件不使用Data控件而是使用滚动条来控制记录集的滚动。
3在新窗体上使用DBGrid控件使用DBGrid控件显示数据。
第十三章 数 据 库 24 3 事务方式按钮组 事务是用户定义的一个数据库操作序列这些操作要么全做要么全不做。
例如进行银行转帐时需要执行两步操作从帐号A中取出一万元将取出的一万元存入帐号B。
这两个操作就必须定义成一个事务否则如果在执行第一步操作后出现故障则数据库中的数据存款余额将处于不一致状态。
在执行一个事务时如果事务中的所有操作全部正常完成则可以通过提交事务确认所做的修改如果在事务的执行过程中出现故障则可以撤销事务中已经执行的操作保证事务中的操作全部没有做。
第十三章 数 据 库 25 事务方式按钮组中的各按钮的作用 1开始事务单击工具栏的 按钮开始一个新的事务。
2回滚当前事务单击工具栏的 按钮撤消自开始事务以来对数据库所做的一切修改。
3提交当前事务单击工具栏的 按钮确认自开始事务以来对数据库所做的修改原有数据将不能恢复。
2. 数据的添加、删除和修改 在数据库窗口中右击表名打开 第十三章 数 据 库 26 1. 使用查询生成器 利用可视化数据管理器中的“查询生成器”可以很方便地生成、查看、执行和保存SQL查询。
建立查询语句的具体步骤如下 13.2.6 查询数据 1打开“VisData‖窗口的“实用程序”菜单选择“查询生成器”命令打开“查询生成器”对话框 2选择要查询的―表”指定要显示的所有字段 3构造查询条件。
第十三章 数 据 库 27 查询生成器 第十三章 数 据 库 28 查询生成器各按钮作用 运行查看查询结果。
单击该按钮会打开一个对话框询问“这是SQL传递
查询吗”回答“否”显示查询结果。
显示显示所生成的SQL语句 复制把生成的SQL语句复制到SQL语句窗口。
保存将生成的SQL语句按指定的一个名称保存。
如保存为“女生信息”。
清除清除所有设置回到初始状态。
关闭关闭查询生成器。
第十三章 数 据 库 29 2.使用SQL语句 1 Select语句 Select ALLDISTINCT From Where Order By ASCDESC… 功能: 从指定的表中选出满足条件的记录记录中包含指定的字段。
参数 ALL: 缺省值表示要显示查询到的所有记录。
DISTINCT: 在显示查询结果中如果有多个相同的记录只取其中的一个。
使用DISTINCT可以保证查询结果每一条记录的唯一性。
第十三章 数 据 库 30 指定要在查询结果中包含的字段名具体形式为.字段名各项之间用逗号隔开。
如果选择所有字段则不用一一列出字段名只需写成.如果只对一个表进行查询则和随后的圆点可以省略。
指定所要查询的表可以指定多个表各表名之间用逗号隔开。
指定查询的条件。
将查询结果按该字段排序。
ASC、DESC指定ASC则按升序排序指定DESC则按降序排序。
缺省值为ASC。
第十三章 数 据 库 31 例查询“学生基本信息”表中所有男生记录查询结果只包括班级、学号和姓名字段相应的Select语句如下 Select 学生基本信息.班级学生基本信息.学号 学生基本信息.姓名 From 学生基本信息 Where 学生基本信息.性别 男 对于单个表的查询可以省去各字段名前面的表名以上Select语句可以简写成 Select 班级学号姓名 From 学生基本信息 Where 性别 男 第十三章 数 据 库 32 例显示“学生基本信息”表中男生的所有信息相应的Select语句如下 Select From 学生基本信息 Where 性别 男?? 例显示所有学生的学号、姓名和所在的专业名、系名则需要从“学生基本信息”表、“专业”表和“系”表中查询相应的Select语句如下 Select 学生基本信息.学号学生基本信息.姓名 专业.专业名称系.系名称 From 学生基本信息专业系 Where 学生基本信息.专业编号专业.专业编号 And 专业.系编号系.系编号 第十三章 数 据 库 33 例设有一个“学生成绩”表包含学号、姓名、数学成绩、英语成绩四个字段。
使用Select语句实现各种统计、汇总。
统计该一共有多少名学生 Select Count As 总人数 From 学生成绩 统计一共有多少名数学成绩及格的学生 Select Count As 及格人数 From 学生成绩 Where 数学成绩 60 求所有学生的数学平均成绩和英语平均成绩 Select Avg数学成绩 As 数学平均成绩 Avg英语成绩 As 英语平均成绩 From 学生成绩 第十三章 数 据 库 34 求所有学生的数学成绩的总和和英语成绩的总和 Select Sum数学成绩 As 数学总成绩 Sum英语成绩 As 英语总成绩 From 学生成绩 求英语最高分和最低分 Select Max英语成绩 As 英语最高分 Min英语成绩 As 英语最低分 From 学生成绩 第十三章 数 据 库 35 2 Insert语句 使用Insert语句可以向一个表中插入记录。
Insert语句可以有两种形式。
形式一 INSERT INTO … VALUES ... 功能将一系列的值作为一条记录插入到指定的表的指定列中。
形式二 INSERT INTO … 功能将一个子查询结果插入到指定的表中。
如果省略列名则表示要向所有列插入数据。
第十三章 数 据 库 36 例设在“学生”数据库中有一个“新系”表下面的Insert语句表示向“新系”表插入一条新记录“系编号”字段值为“007‖“系名称”字段值为“建筑系” Insert Into 新系 系编号系名称 Values 007 建筑系 例从“新系”表中选择“系编号”为“005‖的记录将其“系编号”、“系名称”插入到“系”表中 Insert Into 系 Select 系编号系名称 From 新系 Where 新系.系编号005 例从“新系”表中选择所有记录并将其添加到“系”表中 第十三章 数 据 库 37 3 Delete语句 Delete语句可以从一个表中删除指定的记录Delete语句格式如下 DELETE FROM WHERE WHERE子句用于指定只删除满足条件的记录。
省略WHERE子句删除指定表的所有记录。
例从“新系”表中删除所有“系编号”大于“005‖的记录 Delete From 新系 Where 系编号005 例删除“新系”表中的所有记录 Delete From 新系 第十三章 数 据 库 38 4 Update语句 使用Update语句可以更改表中一个或多个记录的列值Update语句格式如下 UPDATE SET … WHERE 例:假设在某“职工工资”表中包含“姓名”、“性别”、“基本工资”、“奖金”、“实发工资”字段现要给所有女职工增加2的基本工资。
可以使用以下语句 Update 职工工资 Set 基本工资 基本工资 1.02 Where 性别 女 在增加基本工资之后计算实发工资 Update 职工工资 Set 实发工资 基本工资 奖金 第十三章 数 据 库 39 将数据库中的数据或查询结果显示在界面上。
在当前工程中建立数据窗体: 实用程序→数据窗体
设计器 13.2.7 数据窗体设计器 第十三章 数 据 库 40 对话框中各选项作用如下 1窗体名称设置要添加到当前工程中的窗体的名称。
Visual Basic在输入的窗体名称前自动加上“frm‖做为实际生成的窗体名称。
2记录源选择用于创建窗体所需要的记录源。
在下拉列表中列出了当前可用的所有表名和查询名用户可以从该列表中选择一个表或查询。
也可以直接输入一个新的SQL语句。
3可用的字段列出指定的记录源上的所有可用的字段。
4“‖按钮将选择的字段从“可用的字段”列表移到“包括的字段”
列表。
5“‖按钮将“可用的字段”列表中的所有字段移到“包括的字段”列表。
第十三章 数 据 库 41 6“