VisualBasic实用教程 薛亮 第13章

上传人:E**** 文档编号:89351223 上传时间:2019-05-23 格式:PPT 页数:114 大小:943KB
返回 下载 相关 举报
VisualBasic实用教程  薛亮 第13章_第1页
第1页 / 共114页
VisualBasic实用教程  薛亮 第13章_第2页
第2页 / 共114页
VisualBasic实用教程  薛亮 第13章_第3页
第3页 / 共114页
VisualBasic实用教程  薛亮 第13章_第4页
第4页 / 共114页
VisualBasic实用教程  薛亮 第13章_第5页
第5页 / 共114页
点击查看更多>>
资源描述

《VisualBasic实用教程 薛亮 第13章》由会员分享,可在线阅读,更多相关《VisualBasic实用教程 薛亮 第13章(114页珍藏版)》请在金锄头文库上搜索。

1、第13章 Visual Basic和数据库操作,13.1 数据库概念 13.2 数据控件 13.3 使用对象变量访问数据库 习题十三,13.1 数 据 库 概 念,几乎所有的应用程序都需要存放大量的数据,并将其组织成易于读取的格式。这种要求通常可以通过数据库管理系统(DBMS)来实现。数据库管理系统提供了数据在数据库内的存放方式及管理能力,使编程人员不必像使用文件那样需要考虑数据的具体操作或数据连接关系的维护。那么,数据库是什么呢?简单地说,数据库就是一组排列成易于处理和读取的相关信息的集合。最近几年来,关系模型已经成为数据库设计的事实上的标准。这不仅因为关系模型自身的强大功能,而且还由于它提

2、供了叫做结构化查询语言(SQL)的标准接口,该接口允许以一致的和可理解的方法来使用许多数据库工具和产品。,关系型数据库模型把数据用表的集合表示。通过建立简单表之间的关系来定义数据结构,而不是根据数据的物理存储方式建立数据中的关系。不管表在数据库文件中的物理存储方式如何,都可以把它看作一组行和列的组合。在关系数据库中,行被称为记录,而列则被称为字段,表是有关信息的逻辑组。 例如考生成绩表,表中每一行是一个记录,它包含了特定考生的所有信息,而每个记录则包含了相同类型和数量的字段:准考证号、考生姓名、数学、外语,等等。每个表都应有一个主关键字(主键),主关键字可以是表的一个字段或字段的组合,且对表中

3、的每一行都惟一,它们为快速检索而被索引。例如,在考生成绩表中,准考证号是表的主键,因为准考证号惟一地标识了一个且只有一个考生。,数据库可以由多个表组成,表与表之间可以用不同的方式相互关联,例如,考生数据库还可以有一个包含每个考生志愿的表。它只用一个准考证号字段来引用填报某志愿的考生,而不在志愿表中重复所有考生的每项信息,在这个表中,通过准考证号字段引用了考生成绩表中的准考证号字段,从而把考生志愿和成绩联系起来了。用来建立表间关系的关键字叫做外部键,因为它与“外部”表的主键关联。,如果从考生成绩表的角度出发,上述表间的关系类型叫做一对多关系,因为一个考生可以填报多个志愿。也可以建立多对多的关系。

4、例如,列出所有招生学校和上线考生志愿的关系表,可以看到在志愿和考生之间存在多对多的关系。也就是说,一个考生可以填报多个学校,而一个学校又能够被多个考生填报。多对多关系是通过两个独立的一对多关系来定义的,公共的“多”表包含了两个其它表的外部键。例如,Visual Basic所带的样本数据库Biblio.mdb包含Titles(书名)、Publishers(出版商)、Authors(作者)和Title Author(书籍作者)这4个表。在Authors表与Titles表之间创建了一对多的关系(一个作者可以写多本书),在Publishers表与Titles表之间创建了一对多的关系(一个出版商可以出版

5、许多书),而在Authors表和Publishers表之间创建多对多的关系(一个作者的书可以被许多出版商出版,而一个出版商的某本书可以被多个作者共同来写它)。,在Visual Basic中,可以将一个或几个表中的数据对象构成记录集(Recordset),记录集也由行和列构成,它与表类似。由于数据库中的表格不允许直接访问,而只能通过记录集对象进行记录的操作和浏览,因此,记录集是一种浏览数据库的工具,用户可根据需要,通过使用记录集对象选择数据。记录集对象提供了24种方法和26种属性,利用它们可以对数据库中的记录进行各种处理。记录集有三种类型:表(Table)、动态集(DynaSet)、快照(Sna

6、pShot)。它们之间存在着明显的区别。,1Table 表类型的Recordset对象是表格的直接显示数据。只能对单个的表打开表类型的记录集,而不能对联接或者联合查询打开。如果使用基本表创建的索引,就可以对表类型的Recordset对象进行索引。Table比其它类型的记录集处理速度都快,但它需要大量的内存开销。,2DynaSet 动态集类型的Recordset对象是可以修改的显示数据。它实际上是对一个或者几个表中的记录的一系列引用。可用动态集从多个表中提取和更新数据,其中包括链接其它数据库中的表。动态集和它的基本表可以互相更新。如果动态集中的记录发生改变,则同样的变化也将在基本表中反映出来。在

7、打开动态集的时候,如果其它的用户修改了基本表,那么动态集中也将反映出被修改过的记录。动态集类型是最灵活的Recordset类型,也是功能最强的Recordset类型。不过,它的搜索速度与其它操作的速度不及Table的速度。,3SnapShot类型 SnapShot(快照)类型的Recordset对象是静态的显示数据(只读)。包含的数据是固定的,它反映了在产生快照的一瞬间数据库的状态。SnapShot是最缺少灵活性的记录集,但它所需要的内存开销最少。如果只是浏览记录,可以用SnapShot类型。 还有一个变形的SnapShot类型,有时被称为“仅向前快照”或者“向前滚动快照”。与快照类似,从Mi

8、crosoft Jet得到的仅向前类型的Recordset对象是不可更新的。另外,仅向前的快照只允许在记录中向前移动,而不能向相反的方向移动。这种类型的Recordset对象不能被复制,但是通常可以达到最快的速度。,具体使用什么记录集,取决于需要完成的任务:是要更改数据,还是简单地查看数据。例如,如果必须对数据进行排序或者使用索引,则应使用表。因为表类型的Recordset对象是做了索引的,它定位数据的速度是最快的;如果希望能够对查询选定的一系列记录进行更新,则应使用动态集。如果在特殊的情况下不能使用表类型的记录集,而且只需对记录进行扫描,那么使用仅向前的快照类型可能会快一些。一般来说,尽可能

9、地使用表类型的Recordset对象,它的性能通常总是最好的。,13.2 数 据 控 件,13.2.1 数据控件属性 1. Connect属性 Connect属性指定数据库类型, Visual Basic可识别的数据库有: (1) Microsoft Access的MDB文件(缺省值); (2) Borland dBASE、Microsoft FoxPro的DBF文件; (3) Borland Paradox的DB文件; (4) Novell Btrieve的DDF文件; (5) Open DataBase Connectivity(ODBC)数据库。,2DatabaseName属性 Data

10、baseName属性指定具体使用的数据库。如果要连接了一个Microsoft Access或Btrieve数据库,就把DatabaseName设为MDB文件名, Access数据库的所有表都包含在一个MDB文件中。如果连接了一个dBASE、FoxPro或Paradox数据库,就应该把DatabaseName设置为对应子目录名,这些数据库文件只包含一张表。,3RecordType属性 RecordType确定记录集合类型,记录集合类型可以是数据库中的表或一个存储查询。如果用户恰好在使用Microsoft Access的MDB数据库,则RecordType属性应选择Table记录集合类型;如果用户

11、正在使用其它任何一种类型的数据库,那么,应选择DynaSet记录集合类型;如果用户只需要读数据而不更新它,那么,应选择SnapShot记录集合类型。,4RecordSource属性 RecordSource确定具体可访问的数据,可以是数据库中的单个表、一个存储查询,也可以是使用SQL查询语言的一个查询字符串。 由RecordSource确定的具体可访问的数据构成的记录集合(Recordset)也是一个对象,因此,它和其它对象一样具有属性和方法。Recordset记录集有BOF和EOF属性,Recordset.BOF确定当前记录指针是否在首记录之前,若BOF为True,则当前指针位置位于记录集的

12、第一个记录之前。与此类似,Recordset.EOF确定是否在当前记录指针末记录之后。,BOF和EOF属性具有以下特点: (1) 如果记录集中没有记录,则BOF和EOF属性值都是True。 (2) 当BOF和EOF属性值成为True之后,只有将指针移动到实际存在的记录上,BOF和EOF属性值才会变为False。 (3) 若BOF和EOF属性为False,而且记录集中惟一的记录被删除掉,那么属性将保持False,直到将指针移到另一个记录为止,这时BOF和EOF属性都将变为True。 (4) 当创建或打开至少含有一个记录的记录集时,第一个记录将成为当前记录,而且BOF和EOF属性为False。,5

13、EOFAction和BOFAction属性 当记录集的BOF或EOF属性为True时,EOFAction和BOFAction属性的设置或返回值决定数据控件要采取的操作。属性的取值如表13.1所示。,表13.1 EOFAction和BOFAction的属性取值,6ReadOnly属性 ReadOnly用于控制能否对记录集进行写操作。当ReadOnly设置为True时,不能对记录集进行写操作。 在Visual Basic中,数据控件本身不能直接显示记录集中的数据,必须通过与它关联的控件来实现。可与数据控件关联的控件有文本框、标签、图像框、图形框、列表框、组合框、复选框、DB组合框、DB列表框、DB

14、网格和OLE容器等控件。,要使关联控件能被数据库约束,必须对这些控件的两个属性进行设置。 (1) DataSource属性,DataSource属性通过指定一个有效的数据控件连接一个数据库,DataSource属性必须在设计时通过属性窗口设置。 (2) DataField属性,DataField属性设置数据库有效的字段。DataField属性可以在设计或运行时设置。,(2) DataField属性,DataField属性设置数据库有效的字段。DataField属性可以在设计或运行时设置。 当上述控件与数据控件关联后,Visual Basic将控件的值赋为当前数据库记录的域值。如果修改了关联控件

15、内的数据,只要移动记录指针,修改后的数据会自动写入数据库。设置BofAction属性值为2,当记录集的EOF属性为True时,数据控件会自动加入新的空记录。数据控件在装入数据库时,它把记录集的第一个记录作为当前记录。Visual Basic可以直接使用数据控件对象的4个箭头来改变当前记录。数据控件对象外侧的两个箭头可分别移动记录指针到数据库的首尾记录上,另两个箭头每次向前或向后移动一个记录。,【例13-1】 用一个数据控件和三个文本框显示Visual Basic系统提供的Biblio.mbd数据库内容。 本例中不需要编写任何代码,具体操作步骤如下: (1) 在窗体中,设置一个数据控件、三个文本

16、框和三个标签控件。 (2) 用数据控件Data1的Connect属性指定Access数据库类型,DatabaseName属性连接数据库Biblio.mdb,RecordSource属性指定数据库Biblio.mdb中的表Titles。,(3) 三个文本框控件的DataSource属性都设置成Data1,通过点击文本框控件的DataField属性上的 . 按钮,下拉出Biblio.mdb数据库中表Titles所含的字段,分别选择与其对应的字段Note、Title、Year Published,建立约束关系。 运行时文本框txtNote内将显示关联数据库中表Title内的字段Note的内容,文本框txtTitle显示字段Title的内容,文本框txtYear显示字段Year Published的内容。,使用数据控件对象的4个箭头可遍历整个记录集中的记录。单击最左边的按钮显示第一个记录,单击其旁边的按钮显示上一个记录;单击最右边的按钮显示最后一个记录,单击其旁边的按钮显示下一个记录。 使用Data控件除了可以浏览和显示Recordset对象中的记录外,同时还可以编辑数据。如

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号