VB程序设计第2版第13章.ppt
- 文档编号:18735408
- 上传时间:2023-10-23
- 格式:PPT
- 页数:79
- 大小:906.50KB
VB程序设计第2版第13章.ppt
《VB程序设计第2版第13章.ppt》由会员分享,可在线阅读,更多相关《VB程序设计第2版第13章.ppt(79页珍藏版)》请在冰点文库上搜索。
1,第13章,数据库,本章要点:
数据库的基本概念可视化数据管理器使用ADO数据控件访问数据库,2,引言,随着科学技术和社会经济的飞速发展,人们掌握的信息量急剧增加,要充分地开发和利用这些信息资源,就必须有一种新技术能对大量的信息进行识别、存储、处理与传播。
随着计算机软硬件技术的发展,20世纪60年代末,数据库技术应运而生,并从70年代起得到了迅速的发展和广泛的应用。
数据库技术主要研究如何科学地组织和存储数据,如何高效地获取和处理数据。
数据库技术作为数据管理的最新技术,目前已广泛应用于各个领域。
3,13.1数据库的基本概念,数据库(DataBase,DB):
-以一定方式组织并存储在一起的相互有关的数据的集合。
数据库管理系统(DBMS)用户与数据库之间的接口,可以实现对数据的组织和管理。
数据的组织:
按组织方式的不同,分为三种模型,相应地有关系数据库;层次数据库;网状数据库。
关系数据库是目前使用最多的数据库。
数据的管理:
提供对数据库使用和加工的操作,如对数据库的建立、修改、检索、计算、统计、删除等。
VB可以处理多种数据库:
如Access、FoxPro、DataBase、Excel、Paradox等格式的数据库。
4,数据库管理系统运行在一定的硬件和操作系统平台上,人们可以使用一定的开发工具,利用DBMS提供的功能,创建满足实际需求的数据库应用系统。
关系数据库管理系统(RDBMS)是目前使用最多的一类数据库管理系统。
5,1.表将相关的数据按行和列的形式组织成二维表格即为表,表通常用于描述某一个实体。
表名称:
每个表有一个名称。
一个数据库可以有一个或多个表,各表之间存在着某种关系。
数据库名称:
如ACCESS数据库文件扩展名为.mdb,13.1.1关系数据库的结构,6,例如:
“学生.mdb”数据库1)“学生基本信息”表,2)“专业”表,3)“系”表,7,2.表的结构记录:
表中的每一行称为一个记录。
同一个表不应有相同的记录。
字段:
表中的每一列称为一个字段。
字段名:
每个字段一个名称。
字段类型:
每个字段一种类型。
数据项:
记录中的某字段值称表的结构按字段定义。
显然,在一个表中,记录的顺序和字段顺序不影响表中的数据信息。
8,例如,前面的各表可以定义如下:
9,3.表中的关键字候选关键字:
如果表中的某个字段或多个字段组合能唯一地确定一个记录,称该字段或多个字段组合为侯选关键字。
侯选关键字可以有多个。
如“学生基本信息”表中的“学号”可以作为侯选关键字,因为对于每个学生来说,学号是唯一的。
一个表可以有多个侯选关键字,但只能有一个关键字作主关键字。
关键字中的每一个值必须是唯一的,且不能为空值(Null)。
10,4.表间的关联按照某一个公共字段建立的一个表中记录同另一个表中记录之间的关系。
如“学生基本信息”表与“专业”表之间通过“专业编号”字段建立关系。
这种关系分为一对一、一对多(或多对一)、多对多关系。
常用的是一对多(或多对一)关系,例如,对于“专业”表中的每一个专业编号,在“学生基本信息”表中都有多条记录具有相同的专业编号,因此,“专业”表中的专业编号与“学生基本信息”表的专业编号之间是一对多的关系。
11,5.外部键设某个字段或字段的组合F不是表A的关键字,如果F与另一个表B的主关键字相对应,则称F为表A的外部键。
外部键与主关键字通常是多对一的关系。
例如,“学生基本信息”表中的“专业编号”可以定义为外部键,它与“专业”表中的“专业编号”(主关键字)相关联。
外部键的值应当是主关键字值的子集,或者为空(Null)值。
例如,“学生基本信息”表中的专业编号只能是专业表中已经存在的专业编号,或者是空值。
12,6.索引索引是为了加速查找引入的。
索引和一本书的目录类似,在书本的目录上有章节名称和页号,在索引文件上相应地也有索引关键字和指针。
索引关键字按特定的顺序排序,指针指向表中的记录。
查找数据时,数据库管理系统先从索引文件上根据索引关键字找到信息的位置(指针),再根据指针从表中读取数据。
索引关键字(或索引字段)既可以是一个字段,也可以是多个字段的组合。
在一个表中可以建立多个索引,但只能有一个主索引,主索引的索引关键字的值在整个表中不允许出现重复,且不能为空值。
13,例如,要按学生的学号快速检索学生基本信息,可以在“学生基本信息”表中以“学号”为索引关键字建立一个索引,取名为“xh”。
通常,只有当被索引的字段中的数据经常被查询时,才需要对表创建索引。
索引将占用磁盘空间,并且降低添加、删除和修改记录的速度。
在多数情况下,索引所带来的检索数据的速度优势,将大大超过它的不足之处,然而,如果应用程序非常频繁地更新数据,或磁盘空间有限,那么最好限制索引的数量。
14,在VB中,要对数据库进行访问,需要通过数据访问对象进行,数据访问对象包括:
1.DAO:
DataAccessObject-数据访问对象2.RDO:
RemoteDataObject-远程数据对象3.ADO:
ActiveXDataObject-ActiveX数据对象ADO是DAO/RDO的后继产物,它扩展了DAO和RDO所使用的对象模型,包含较少的对象,更多的属性、事件和方法。
通过ADO可以访问各种各样的数据源。
13.1.2数据访问对象模型,15,利用结构化查询语言(StructuredQueryLanguage,SQL)可以实现对数据库的检索、排序、统计、修改等多种操作。
例如,下面是一个用来查询信息的SQL语句:
Select系.系名称,学生基本信息.学号,学生基本信息.姓名,学生基本信息.班级From专业,系,学生基本信息Where学生基本信息.班级=建98-01And学生基本信息.专业编号=专业.专业编号And专业.系编号=系.系编号,13.1.3结构化查询语言(SQL),16,13.2可视化数据管理器,VisualBasic提供了一个非常方便的数据库操作工具,即可视化数据管理器(VisualDataManager),使用可视化数据管理器可以方便地建立数据库、添加表、对表进行修改、添加、删除、查询等操作。
17,13.2.1启动可视化数据管理器,打开方法:
外接程序可视化数据管理器,18,13.2.2新建数据库,文件新建MicrosoftAccessVerson7.0MDB确定数据库文件保存位置及名称显示:
数据库窗口,SQL语句窗口,数据库窗口:
列出数据库的常用属性。
SQL语句窗口:
输入、执行、保存SQL语句。
19,13.2.3打开数据库,打开方法:
文件打开数据库MicrosoftAccess,20,13.2.4添加表和修改表,1)在数据库窗口快捷菜单中选择“新建表”项2)在打开的“表结构”对话框添加字段和索引,21,13.2.5添加、删除和修改数据,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语句SelectALL|DISTINCTFromWhereOrderByASC|DESC,功能:
从指定的表中选出满足条件的记录,记录中包含指定的字段。
参数:
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语句实现各种统计、汇总。
统计该一共有多少名学生:
SelectCount(*)As总人数From学生成绩统计一共有多少名数学成绩及格的学生:
SelectCount(*)As及格人数From学生成绩Where数学成绩=60求所有学生的数学平均成绩和英语平均成绩:
SelectAvg(数学成绩)As数学平均成绩,Avg(英语成绩)As英语平均成绩From学生成绩,34,求所有学生的数学成绩的总和和英语成绩的总和:
SelectSum(数学成绩)As数学总成绩,Sum(英语成绩)As英语总成绩From学生成绩求英语最高分和最低分:
SelectMax(英语成绩)As英语最高分,Min(英语成绩)As英语最低分From学生成绩,35,
(2)Insert语句使用Insert语句可以向一个表中插入记录。
Insert语句可以有两种形式。
形式一:
INSERTINTO(,)VALUES(,.,)功能:
将一系列的值作为一条记录插入到指定的表的指定列中。
形式二:
INSERTINTO(,)功能:
将一个子查询结果插入到指定的表中。
如果省略列名,则表示要向所有列插入数据。
36,例:
设在“学生”数据库中有一个“新系”表,下面的Insert语句表示向“新系”表插入一条新记录,“系编号”字段值为“007”,“系名称”字段值为“建筑系”:
InsertInto新系(系编号,系名称)Values(007,建筑系)例:
从“新系”表中选择“系编号”为“005”的记录,将其“系编号”、“系名称”插入到“系”表中:
InsertInto系Select系编号,系名称From新系Where新系.系编号=005例:
从“新系”表中选择所有记录,并将其添加到“系”表中:
InsertInto系Select系编号,系名称From新系,37,(3)Delete语句Delete语句可以从一个表中删除指定的记录,Delete语句格式如下:
DELETEFROMWHEREWHERE子句:
用于指定只删除满足条件的记录。
省略WHERE子句:
删除指定表的所有记录。
例:
从“新系”表中删除所有“系编号”大于“005”的记录:
DeleteFrom新系Where系编号=005例:
删除“新系”表中的所有记录:
DeleteFrom新系,38,(4)Update语句使用Update语句可以更改表中一个或多个记录的列值,Update语句格式如下:
UPDATESET=,=WHERE例:
假设在某“职工工资”表中包含“姓名”、“性别”、“基本工资”、“奖金”、“实发工资”字段,现要给所有女职工增加2%的基本工资。
可以使用以下语句:
Update职工工资Set基本工资=基本工资*1.02Where性别=女在增加基本工资之后计算实发工资:
Update职工工资Set实发工资=基本工资+奖金,39,将数据库中的数据或查询结果显示在界面上。
在当前工程中建立数据窗体:
实用程序数据窗体设计器,13.2.7数据窗体设计器,40,对话框中各选项作用如下:
1)窗体名称:
设置要添加到当前工程中的窗体的名称。
VisualBasic在输入的窗体名称前自动加上“frm”做为实际生成的窗体名称。
2)记录源:
选择用于创建窗体所需要的记录源。
在下拉列表中列出了当前可用的所有表名和查询名,用户可以从该列表中选择一个表或查询。
也可以直接输入一个新的SQL语句。
3)可用的字段:
列出指定的记录源上的所有可用的字段。
4)“”按钮:
将选择的字段从“可用的字段”列表移到“包括的字段”列表。
5)“”按钮:
将“可用的字段”列表中的所有字段移到“包括的字段”列表。
41,6)“”按钮:
将“包括的字段”列表中的所有字段移到“可用的字段”列表。
7)“”按钮:
将选择的字段从“包括的字段”列表移到“可用的字段”列表。
8)包括的字段:
列出要在窗体上包含的字段。
通过单击列表右侧的“”按钮和“”按钮可以调整列表中字段的位置,列表顺序决定了字段在窗体上的显示次序。
9)“生成窗体”:
单击该按钮按所做的选择在当前工程中添加一个数据窗体。
42,例如:
TextBox控件,43,13.3使用ADO数据控件访问数据库,ADO:
ActiveXDataObject(ActiveX数据对象),它是Microsoft提供的最新的数据访问技术,是一组优化的访问数据的专用对象集。
ADO访问数据是通过OLEDB来实现的。
使用ADO提供的编程模型可以访问几乎所有数据源。
使用ADO数据控件可以方便快捷地建立与数据源的连接。
ADO本身不能直接显示记录集中的数据,它必须通过与之相绑定的控件来实现数据的显示。
能与ADO数据控件进行绑定的控件被称为数据绑定控件。
如文本框。
44,13.3.1ADO数据控件,1.ADO数据控件的添加工程部件在“控件”选项卡上选择“MicrosoftADODataControl6.0(OLEDB)”选项。
将ADO数据控件添加到工具箱中。
可以像添加普通控件一样将其添加到任何容器上。
45,2.ADO数据控件的属性,设置ADO控件的属性可以快速地建立和数据库的连接。
方法一:
在控件的属性页中对属性进行设置。
方法二:
在属性窗口中直接设置其属性。
46,1)连接字符串:
包含了用于与数据库连接的相关信息,对应于ConnectionString属性。
在属性页中设置连接字符串:
47,设置“数据库连接属性”对话框选择提供程序,48,设置“数据库连接属性”对话框设置连接信息,49,生成的连接字符串:
Provider=Microsoft.Jet.OLEDB.4.0;PersistSecurityInfo=False;DataSource=D:
mydb学生.mdb在属性窗口设置连接字符串:
例如:
Adodc1.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;PersistSecurityInfo=False;DataSource=D:
mydb学生.mdb,50,2)记录源。
记录源确定了具体可以访问的数据,这些数据构成了记录集对象Recordset。
8adCmdUnknown1adCmdText2-adCmdTable4adCmdStoredProc,在“属性页”中设置记录源:
51,4)BOFAction属性:
返回或设置一个值,指示在BOF属性为True时ADO数据控件进行什么操作。
有两种选择:
0-adDoMoveFirst:
缺省设置。
将第一个记录作为当前记录。
1-adStayBOF:
将当前记录位置定位在第一个记录之前。
记录集的BOF值保持True,这时禁止ADO数据控件上的按钮。
3)Recordset属性:
ADO数据控件的Recordset属性实际上是一个对象,即Recordset对象(也称记录集对象),因此有其属性和方法。
Recordset对象包含了从数据源获得的数据(记录)集,使用它可以在数据库中查询、添加、修改和删除数据。
52,5)EOFAction属性:
返回或设置一个值,指示在EOF属性为True时ADO数据控件进行什么操作。
有三种选择:
0-adDoMoveLast:
缺省设置。
保持最后一个记录为当前记录。
1-adStayEOF:
将当前记录位置定位在最后一个记录之后。
记录集的EOF值保持True,这时禁止ADO数据控件上的(MoveNext)按钮。
2adDoAddNew:
移过最后一个记录时自动添加一个新记录。
53,数据绑定控件是任何具有“数据源”属性的控件,用于显示由数据控件所确定的记录集中的数据。
绑定控件、数据控件和数据库之间的关系如下:
如:
文本框(TextBox)、标签(Label)、图片框(PictureBox)、图像框(Image)、列表框(ListBox)、组合框(ComboBox)、复选框(CheckBox)、数据列表(DataList)、数据网格(DataGrid),13.3.2数据绑定控件,54,要使数据绑定控件能够显示数据库记录集中的数据,通常首先在设计时或在运行时设置这些控件的两个属性:
DataSource属性:
返回或设置一个数据源,通过该数据源,数据绑定控件被绑定到一个数据库。
DataField属性:
返回或设置数据绑定控件将被绑定到的字段名。
55,【例13-1】利用“学生”数据库中的数据,用文本框显示“学生基本信息”表的班级、学号、姓名、性别。
使用命令按钮实现记录的向前、向后移动。
设计界面:
56,运行时:
单击“上一个”按钮显示上一个记录,当显示到第一个记录时,继续单击“上一个”按钮,则该按钮变为无效,而把焦点定位到“下一个”按钮。
单击“下一个”按钮显示下一个记录,当显示完最后一个记录后,再单击“下一个”按钮,则该按钮无效,焦点定位到“上一个”按钮。
文本框只用于浏览数据,不允许修改。
不显示ADO数据控件。
57,设计步骤:
1)新建一个标准EXE工程,打开“部件”对话框,选择“MicrosoftADODataControl6.0(OLEDB)”,向工具箱中添加一个ADO数据控件,并将其添加到窗体上,使用默认名称Adodc1。
设置其Visible属性为False。
2)在Adodc1控件的属性页的“通用”选项卡上生成连接字符串如下:
Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:
mydb学生.mdb;PersistSecurityInfo=False3)在Adodc1控件的属性页的“记录源”选项卡上选择命令类型为“2adCmdTable”,设置表名称为“学生基本信息”,58,4)添加其他控件,按下表设置各控件的主要属性,59,5)编写各命令按钮的单击事件过程。
PrivateSubCommand1_Click()“上一个”按钮Command2.Enabled=TrueIfAdodc1.Recordset.BOFThenCommand1.Enabled=FalseCommand2.SetFocusElseAdodc1.Recordset.MovePreviousEndIfEndSub,60,PrivateSubCommand2_Click()“下一个”按钮Command1.Enabled=TrueIfAdodc1.Recordset.EOFThenCommand2.Enabled=FalseCommand1.SetFocusElseAdodc1.Recordset.MoveNextEndIfEndSubPrivateSubCommand3_Click()“退出”按钮EndEndSub,61,【例13-2】利用“学生”数据库中的数据,使用表格控件浏览数据库中的数据。
在表格中显示系名称、专业名称、班级、学号、姓名,性别。
设计步骤如下:
1)新建一个标准EXE工程,向窗体上添加一个ADO数据控件,使用默认名称Adodc1。
2)设置Adodc1的Align属性为“2-vbAlignButtom”,使其填充窗体底部。
3)在Adodc1控件的属性页的“通用”选项卡上生成连接字符串如下:
Provider=Microsoft.Jet.OLEDB.4.0;DataSource=D:
mydb学生.mdb;PersistSecurityInfo=False,62,4)在Adodc1控件的属性页的“记录源”选项卡上选择命令类型为“1adCmdText”,设置命令文本为以下查询语句:
Select系.系名称,专业.专业名称,学生基本信息.班级,学生基本信息.学号,学生基本信息.姓名,学生基本信息.性别From专业,系,学生基本信息Where专业.系编号=系.系编号And专业.专业编号=学生基本信息.专业编号,63,5)打开“部件”对话框,选择“MicrosoftDataGridControl6.0(OLEDB)”,向工具箱中添加一个DataGrid控件,并将其添加到窗体上,使用默认名称DataGrid1。
6)设置DataGrid1控件的Align属性为“1-vbAlignTop”,其填充窗体顶部;设置其DataSource属性为Adodc1。
64,7)运
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 程序设计 13
![提示](https://static.bingdoc.com/images/bang_tan.gif)