《VB60教程课件_第14章__数据库编程基础.ppt》由会员分享,可在线阅读,更多相关《VB60教程课件_第14章__数据库编程基础.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第十四章第十四章VB数据库编程基础数据库编程基础14.1 14.1 数据库基础数据库基础数据库技术的产生与发展数据库技术的产生与发展硬件OS应用系统用户DBMS14.1.2数据库基本概念数据库基本概念 根据数据模型,即实现数据结构化所采用的联系方式,根据数据模型,即实现数据结构化所采用的联系方式,数据库可以分为层次数据库数据库可以分为层次数据库、网状数据库网状数据库和关系数据库关系数据库。关系数据库的有关概念关系数据库的有关概念1关系(表)关系(表)在在关关系系数数据据库库中中,数数据据以以关关系系的的形形式式出出现现,可可以以把把关关系系理理解成一张二维表(解成一张二维表(Table)。)。
2、2记录(行)记录(行)每每张张二二维维表表均均由由若若干干行行和和列列构构成成,其其中中每每一一行行称称为为一一条条记记录(录(Record)3字段(列)字段(列)二二维维表表中中的的每每一一列列称称为为一一个个字字段段(Field),每每一一列列均均有有一一个名字,称为字段名,各字段名互不相同。个名字,称为字段名,各字段名互不相同。4主键主键 关关系系数数据据库库中中的的某某个个字字段段或或某某些些字字段段的的组组合合定定义义为为主主键键(PrimaryKey)。每每条条记记录录的的主主键键值值都都是是唯唯一一的的,这这就就保保证证了可以通过主键唯一标识一条记录。了可以通过主键唯一标识一条记
3、录。14.1.2数据库基本概念数据库基本概念5索引索引 为了提高数据库的访问效率,表中的记录应该按照一定为了提高数据库的访问效率,表中的记录应该按照一定顺序排列,通常建立一个较小的表顺序排列,通常建立一个较小的表索引表,该表中只含索引表,该表中只含有索引字段和记录号。通过索引表可以快速确定要访问记录有索引字段和记录号。通过索引表可以快速确定要访问记录的位置。的位置。14.1.3VisualBasic的数据库应用的数据库应用VisualBasic是一个功能强大的数据库开发平台,所以常是一个功能强大的数据库开发平台,所以常常选择常选择VB作为开发数据库前台应用程序的工具。作为开发数据库前台应用程序
4、的工具。14.1.2数据库基本概念数据库基本概念14.2 14.2 数据库的设计与管理数据库的设计与管理14.2.1建立数据库建立数据库VB提供了两种方法建立数据库,分别是:提供了两种方法建立数据库,分别是:可视化数据管理器可视化数据管理器 数据访问对象(数据访问对象(DAO)1、可视化数据管理器可视化数据管理器 使用可视化数据管理器建立的数据库是使用可视化数据管理器建立的数据库是Access数据库数据库(类型名为(类型名为.mdb),),可以被可以被Access直接打开和操作。在直接打开和操作。在VB环环境下,执行境下,执行“外接程序外接程序”菜单中的菜单中的“可视化数据管理器可视化数据管理
5、器”命命令,即可打开如图令,即可打开如图13-3所示的所示的“可视化数据管理器可视化数据管理器”窗口。窗口。2、建立数据表建立数据表 以以建建立立一一个个如如下下结结构构的学生表为例:的学生表为例:14.2 14.2 数据库的设计与管理数据库的设计与管理图图13-4输入数据库文件名输入数据库文件名 (2)在在对对话话框框中中选选择择数数据据库库文文件件保保存存的的位位置置,并并输输入入文文件件名名后后(保保存存类类型型只只能能是是MDB)单单击击保保存存按按钮钮,将将打开如图打开如图13-5所示的建立数据表窗口。所示的建立数据表窗口。(1)在在“可可视视化化数数据据管管理理器器”窗窗口口中中执
6、执行行“文文件件”菜菜单单中中的的“新新建建”命命令令(假假设设选选择择MicrosoftAccess,版版本本7.0MDB)后,弹出如图后,弹出如图13-4所示的对话框。所示的对话框。14.2 14.2 数据库的设计与管理数据库的设计与管理图图13-5建立数据表窗口建立数据表窗口 (3)右击数据库窗口,在弹出的菜单中选择)右击数据库窗口,在弹出的菜单中选择“新建表新建表”命令,打开如图命令,打开如图13-6所示的所示的“表结构表结构”对话框。对话框。14.2 14.2 数据库的设计与管理数据库的设计与管理 (4)在在“表表结结构构”对对话话框框中中输输入入表表名名后后,单单击击“添添加加字字
7、段段”按按钮钮,在在弹弹出出的的如如图图13-7所所示示的的“添添加加字字段段”对对话话框框中中输输入入字字段段名名,选选择择字字段段类类型型(Text类类型型字字段段还还需需输输入入字字段段大大小小)。重复此过程直至添加完所有字段后,单击重复此过程直至添加完所有字段后,单击“关闭关闭”按钮。按钮。图图13-6“表结构表结构”对话对话框框14.2 14.2 数据库的设计与管理数据库的设计与管理图13-7 “添加字段”对话框3建立索引建立索引 单单击击“表表结结构构”对对话话框框的的“添添加加索索引引”按按钮钮,在在弹弹出出的的对对话话框框中中(如如图图13-8所所示示)输输入入索索引引名名称称
8、,选选择择索索引引字字段段后后,单击单击“确定确定”按钮即完成了索引的建立过程。按钮即完成了索引的建立过程。14.2 14.2 数据库的设计与管理数据库的设计与管理图图13-8“添加索引添加索引”对话框对话框图图13-9“数据库数据库”窗口窗口14.2 14.2 数据库的设计与管理数据库的设计与管理14.2.2数据库的基本操作数据库的基本操作 输入数据输入数据 编辑数据编辑数据删除数据删除数据排序数据排序数据 过滤数据过滤数据 移动数据移动数据查找数据查找数据 右键单击表名,使用快捷菜单的打开,可打开如图右键单击表名,使用快捷菜单的打开,可打开如图13-10所示的输入数据窗口所示的输入数据窗口
9、。14.2 14.2 数据库的设计与管理数据库的设计与管理14.3 14.3 数据控件与数据库网格控件数据控件与数据库网格控件14.3.1数据控件数据控件 数据控件(数据控件(Data)提供了一种方便地访问数据库中数提供了一种方便地访问数据库中数据的方法,使用数据控件无须编写代码就可以对据的方法,使用数据控件无须编写代码就可以对VB所支所支持的各种类型的数据库执行大部分数据访问操作。持的各种类型的数据库执行大部分数据访问操作。数据控件本身不能显示和直接修改记录,只能在数据控件本身不能显示和直接修改记录,只能在与数据控件相关联的与数据控件相关联的数据绑定控件数据绑定控件中显示各个记录。中显示各个
10、记录。可以作可以作数据绑定控件数据绑定控件的标准控件有以下的标准控件有以下8种:种:文本框、文本框、标签、图片框、图像框、检查框、列表框、组合框、标签、图片框、图像框、检查框、列表框、组合框、OLE控件。控件。要使绑定控件能被数据库约束,必需在设计或运行时要使绑定控件能被数据库约束,必需在设计或运行时对上述控件的两个属性进行设置:对上述控件的两个属性进行设置:nDataSource属性属性该属性通过指定该属性通过指定个有效的数据控件连接到一个数据个有效的数据控件连接到一个数据库上。库上。nDataField属性属性该属性设置数据库有效的字段与绑定控件建立联系。该属性设置数据库有效的字段与绑定控
11、件建立联系。数据控件与数据绑定控件数据控件与数据绑定控件 绑定控件、数据控件和数据库三者的关系如图下示:绑定控件、数据控件和数据库三者的关系如图下示:绑定控件绑定控件数据库数据库 当上述控件与数据控件绑定后,当上述控件与数据控件绑定后,Visual BasicVisual Basic将当前记录的字段值赋将当前记录的字段值赋给控件。给控件。数据控件在装入数据库时,它把记录集的第一个记录作为当前记数据控件在装入数据库时,它把记录集的第一个记录作为当前记录。当数据控件的录。当数据控件的EofActionEofAction属性值设置为属性值设置为2 2时,当记录指针移过记录时,当记录指针移过记录集结束
12、位,数据控件会自动向记录集加入新的空记录。集结束位,数据控件会自动向记录集加入新的空记录。2、数据控件属性数据控件属性1.Connect属性属性指定数据库类型指定数据库类型VB可识别的数据库有:可识别的数据库有:MDB文件、文件、DBF文件、文件、DB文件、文件、DF文件和文件和ODBC数据库数据库2.DatabaseName属性属性指定具体使用的数据库名称。指定具体使用的数据库名称。3.RecordType属性属性确定记录集合类型。确定记录集合类型。4.RecordSource属性属性确定数据库中具体访问的数据表。确定数据库中具体访问的数据表。5.EofAction和和BofAction属性
13、决定数据控件要采取的操作。属性决定数据控件要采取的操作。6.RedaOnly属性用于控制能否对记录集进行写操作。属性用于控制能否对记录集进行写操作。要要使使关关联联控控件件能能被被数数据据库库约约束束,必必须须对对控控件件的的两两个个属属性性进进行设置:行设置:7.DataSource属属性性通通过过指指定定一一个个有有效效的的数数据据控控件件连连接接一一个个数据库。数据库。8.DataField属性设置数据库有效的字段。属性设置数据库有效的字段。14.3 14.3 数据控件与数据库网格控件数据控件与数据库网格控件3方法方法(1)Refresh方法方法 可以在数据控件上使用可以在数据控件上使用
14、Refresh方法来打开或重新打开数方法来打开或重新打开数据库(如果据库(如果DatabaseName、ReadOnly或或Connect属性的设置属性的设置值发生改变)。值发生改变)。(2)UpdateControls方法方法 此方法用于从数据控件的此方法用于从数据控件的Recordset对象中读取当前记录,对象中读取当前记录,并将数据显示在相关约束控件上。并将数据显示在相关约束控件上。(3)UpdateRecord方法方法 当当约约束束控控件件的的内内容容改改变变时时,如如果果不不移移动动记记录录指指针针,则则数数据据库库中中的的值值不不会会改改变变,可可通通过过调调用用UpdateRec
15、ord方方法法来来确确认认对记录的修改,将约束控件中的数据强制写入数据库中。对记录的修改,将约束控件中的数据强制写入数据库中。14.3 14.3 数据控件与数据库网格控件数据控件与数据库网格控件4事件事件(1)Reposition事件事件 当数据控件中移动记录指针改变当前记录时触发该事件。当数据控件中移动记录指针改变当前记录时触发该事件。(2)Validate事件事件 如果移动数据控件中记录指针,并且约束控件中的内容如果移动数据控件中记录指针,并且约束控件中的内容已被修改,此时数据库当前记录的内容将被更新,同时触发已被修改,此时数据库当前记录的内容将被更新,同时触发该事件。该事件。14.3 1
16、4.3 数据控件与数据库网格控件数据控件与数据库网格控件5记录集记录集Recordset对象对象 一个Recordset对象代表一个数据库表里的记录,或运行一次查询所得的记录的结果。在“Data”控件中可用3类Recordset对象,即Table(表表类类型型)、Dynaset(动动态态类类型型)和Snapshot(快照类型)快照类型),默认为Dynaset类型类型。(1)Table:表记录集类型表记录集类型,一个记录集(单个表),一个记录集(单个表)(2)Dynaset:动态集类型动态集类型,一个动态记录集(多个表),默,一个动态记录集(多个表),默认值。认值。(3)Snapshot:快照类
17、型:快照类型,一个记录集静态副本(不可改),一个记录集静态副本(不可改)14.3 14.3 数据控件与数据库网格控件数据控件与数据库网格控件 在实际操作中使用什么记录集关键取决于要完成的任务。在实际操作中使用什么记录集关键取决于要完成的任务。表类型的记录集表类型的记录集已建立了索引,适合快速定位与排序,但内已建立了索引,适合快速定位与排序,但内存开销太大。存开销太大。动态集类型动态集类型的记录集则适合更新数据,但其搜的记录集则适合更新数据,但其搜索速度不及表类型。索速度不及表类型。快照类型的记录集快照类型的记录集内存开销最小,适合内存开销最小,适合显示只读数据。显示只读数据。使用使用Recor
18、dset对象的属性与方法的一般格式为:对象的属性与方法的一般格式为:数据控件名数据控件名.Recordset.属性属性/方法方法14.3 14.3 数据控件与数据库网格控件数据控件与数据库网格控件6、使用、使用Recordset对象连接与访问数据库的记录对象连接与访问数据库的记录(1)Move方法方法使用使用Move方法遍历整个记录集中的记录。方法遍历整个记录集中的记录。Move方法是:方法是:MoveFirst或或MoveLast方法移至第一个方法移至第一个或或最后一个记录。最后一个记录。MoveNext或或MovePrevious方法移至下一个方法移至下一个或或上一个记录。上一个记录。Mo
19、ven方法向前或向后移方法向前或向后移n个记录,个记录,n为指定的数值。为指定的数值。14.3 14.3 数据控件与数据库网格控件数据控件与数据库网格控件(2)Find方法方法可可在在指指定定的的Dynaset或或Snapshot类类型型的的Recordset对对象象中中查查找找与与指指定定条条件件相相符符的的一一个个记记录录,并并使使之之成成为为当当前前记记录录。4种种Find方法是:方法是:FindFirst或或FindLast方方法法.找找到到满满足足条条件件的的第第一一个个或或最最后一个记录。后一个记录。FindNext或或FindPrevious方方法法找找到到满满足足条条件件的的下
20、下一一个个或或上一个记录。上一个记录。4种种Find方法的语法格式相同:方法的语法格式相同:数据集合数据集合.Find方法方法条件条件14.3 14.3 数据控件与数据库网格控件数据控件与数据库网格控件(3)Seek方法方法使用使用Seek方法可在方法可在Table表中查找与指定索引规则相符的第表中查找与指定索引规则相符的第一个记录,并使之成为当前记录。其语法格式为:一个记录,并使之成为当前记录。其语法格式为:数据表对象数据表对象.Seekcomparison,key1,key2(4)Refresh方法方法如果在设计状态没有为打开数据库控件的有关属性全部赋如果在设计状态没有为打开数据库控件的有
21、关属性全部赋值,或当值,或当RecordSource在运行时被改变后,必须使用激活在运行时被改变后,必须使用激活数据控件的数据控件的Refresh方法激活这些变化。例如:方法激活这些变化。例如:Data1.DatabaseName=C:VBBiblio.mdbData1.RecordSource=TitlesData1.Refresh(5)Close方法方法关闭指定的数据库、记录集并释放分配给它的资源其语关闭指定的数据库、记录集并释放分配给它的资源其语法格式为:法格式为:对象对象.Close14.3 14.3 数据控件与数据库网格控件数据控件与数据库网格控件(6)AddNew方法方法向数据库中
22、添加记录的步骤如下:向数据库中添加记录的步骤如下:调用调用AddNew方法,打开一个空白记录;方法,打开一个空白记录;通过相关约束控件给各字段赋值;通过相关约束控件给各字段赋值;单击数据控件上的箭头按钮,移动记录指针,或调用单击数据控件上的箭头按钮,移动记录指针,或调用UpdateRecord方法确定所做添加。方法确定所做添加。(7)Delete方法方法删除数据库中记录的步骤如下:删除数据库中记录的步骤如下:将要删除的记录定位为当前记录;将要删除的记录定位为当前记录;调用调用Delete方法;方法;移动记录指针,确定所做删除操作。移动记录指针,确定所做删除操作。14.3 14.3 数据控件与数
23、据库网格控件数据控件与数据库网格控件(8)Edit方法方法编辑数据库中记录的步骤如下:编辑数据库中记录的步骤如下:将要修改的记录定位为当前记录;将要修改的记录定位为当前记录;调用调用Edit方法;方法;通过相关约束控件修改各字段值;通过相关约束控件修改各字段值;移动记录指针,确定所做编辑操作。移动记录指针,确定所做编辑操作。14.3 14.3 数据控件与数据库网格控件数据控件与数据库网格控件14.4.1SQL概述概述结构化查询语言结构化查询语言SQL是操作数据库的工业标准是操作数据库的工业标准语言。在语言。在SQL语言中,指定要做什么而不是怎么做。语言中,指定要做什么而不是怎么做。只要告诉只要
24、告诉SQL需要数据库做什么需要数据库做什么,可以确切指定想可以确切指定想要检索的记录以及按什么顺序检索。可以在设计或要检索的记录以及按什么顺序检索。可以在设计或运行时对数据控件使用运行时对数据控件使用SQL语句。用户提出一个查语句。用户提出一个查询,数据库返回所有与该查询匹配的记录。询,数据库返回所有与该查询匹配的记录。14.4.2SQL的构成的构成14.4 SQL14.4 SQL简介简介常用的常用的SQL命令命令表表:常用SQL命令中的子句14.4.3SQL在在VB中的应用中的应用SQL中中最最经经常常使使用用的的是是从从数数据据库库中中的的获获取取数数据据。从从数数据据库库中中的的获获取取
25、数数据据称称为为查查询询数数据据库库,查查询询数数据据库库通通过过使使用用SELECT语语句句。常常见见的的Select语语句句包包含六部分,其语法形式为:含六部分,其语法形式为:SELECT字段表字段表FROM表名表名WHERE查询条件查询条件GROUPBY分组分组字段字段HAVING分组条件分组条件ORDERBY字段字段ASC|DESC1.使用使用SELECT语句查询语句查询无论是数据控件还是数据对象都可使用无论是数据控件还是数据对象都可使用SELECT语句查询数据。语句查询数据。例如例如用用SQL语句显示数据库语句显示数据库Biblio.mdb中出版日期为中出版日期为1996年全部记录。
26、年全部记录。Data1.RecordSource=SELECT*FROMTitlesWHEREYearPublished=1996用用Data1.Refresh方法激活这些变化。方法激活这些变化。选择表中所有字段指定表Title构成查询条件SELECT语语句句可可以以看看作作记记录录集集的的定定义义语语句句,它它从从一一个个或或多多个个表表中中获获取取指指定定字字段段,生生成成一一个个较较小小的的记记录录集集。下下面面通通过过一一组组对对前前面面建建立的学生成绩数据库的查询操作来学习立的学生成绩数据库的查询操作来学习SELECT语句的基本用法。语句的基本用法。(1)选选取取表表中中部部分分列列
27、。例例如如查查询询学学生生成成绩绩表表中中的的英英语语和和计计算算机机成成绩:绩:SELECT英语,计算机英语,计算机FROMscore(2)选取表中所有列选取表中所有列。例如查询学生成绩表中的所有信息:。例如查询学生成绩表中的所有信息:SELECT*FROMscore(3)WHERE子句。子句。例如查询数学成绩不及格的学生信息:例如查询数学成绩不及格的学生信息:SELECT*FROMscoreWHERE数学数学60(4)复合条件。)复合条件。例如查询数学和英语成绩均不及格的学生信息:例如查询数学和英语成绩均不及格的学生信息:SELECT*FROMscoreWHERE数学数学60AND英语英语
28、=60 ORDER BY 数数学学DESC (6 6)统统计计信信息息。例例如如查查询询数数学学成成绩绩不不及及格格的的人人数数、数数学学平平均均分分、最高分:最高分:SELECTCOUNT(*)AS人数人数FROMscoreWHERE数学数学60SELECT AVG(数数学学)AS 平平均均分分,MAX(数数学学)AS 最最高高分分FROMscore (7 7)GROUPBY子句。子句。例如查询男生与女生的数学平均分:例如查询男生与女生的数学平均分:SELECT性性别别,AVG(数数学学)AS平平均均分分FROMscoreGROUPBY性别性别14.4 SQL14.4 SQL简介简介 (8
29、8)HAVING子子句句。例例如如查查询询数数学学成成绩绩不不及及格格的的人人数数大大于于10人的班级和相应人数:人的班级和相应人数:SELECT班班级级,COUNT(*)AS人人数数FROMscoreWHERE数数学学10 (9)多多表表查查询询。例例如如查查询询学学生生的的学学号号、姓姓名名和和籍籍贯贯(假假设设有有一个一个student表,其中包含了学生的学号、籍贯等信息):表,其中包含了学生的学号、籍贯等信息):SELECTscore.学学号号,score.姓姓名名,score.数数学学,student.籍籍贯贯FROMscore,studentWHEREscore.学号学号=student.学号学号如如前前所所述述,数数据据控控件件的的RecordSource属属性性除除了了可可以以设设置置成成表表名名外外,还可以设置为一条还可以设置为一条SQL语句,格式如下:语句,格式如下:数据控件名数据控件名.RecordSource=“SQL语句语句”14.4 SQL14.4 SQL简介简介