《Visual Basic程序设计教程 教学课件 ppt 作者 胡声艳 李为华 第12章》由会员分享,可在线阅读,更多相关《Visual Basic程序设计教程 教学课件 ppt 作者 胡声艳 李为华 第12章(88页珍藏版)》请在金锄头文库上搜索。
1、第12章 VB与数据库,一.数据库的基本知识,1.知识简介 数据库是按一定方式组织、存储、处理相互关联数据的集合。通常由许多数据库文件组成。,我们所用的数据库通常是指关系型数据库。它把数据用表的集合来表示,而表由一行一行的记录组成,记录包含许多字段(列),从而形成了一个二维表格形式。并且每个表都应有主关键字(由字段构成)来唯一地确定表中的每一行,它们为快速检索提供可能。,在实际情况下,一个数据库可由多个表组成,不同类别的数据存放在不同的表中,表间关系把各个表联接起来。建立的关系通常有3种:一对多的关系、多对多的关系、一对一的关系。,VB中,数据库内的表格不允许直接访问而只能通过记录集对象进行记
2、录的操作和浏览。可以将一个或几个表中的数据构成记录集(Recordset)对象,记录集也由行和列构成,它与表类似。因此,记录集是一种浏览数据库的工具。,用户可以根据需要,通过使用记录集对象来选择数据。记录集对象提供了24种方法和26种属性,利用它们可以对数据库中的记录进行各种处理。,记录集有3种类型:表、动态集、快照。 1表类型(Table) 表类型的Recordset 对象是当前数据库真实的数据表,只能对单个的表打开表类型的记录集,而不能对联接或者联合查询打开。它的处理速度快,但需要大量的内存开销。,2动态集(DynaSet) 它的Recordset对象是可以更新的数据集,它实际上是对一个或
3、者几个表中的记录的引用,动态集和产生动态集的基本表可以互相更新。如果动态集中的记录发生改变,同样的变化也将在基本表中反映出来。动态集是最灵活、功能最强的Recordset类型,不过它的搜寻速度和操作速度不及Table。,3快照(SnapShot) 它是静态数据的显示,它包含的数据是固定的,记录集为只读状态,反映了在产生快照的一瞬间数据库的状态。它是最缺少灵活性的记录集,所需的内存开销最少。如果只是浏览记录,可以用此类型。,使用什么记录集,取决于需要完成的任务。一般,要对数据进行排序或索引,可以使用表。如对查询选择的数据进行更新,可以使用动态集。如只需浏览数据,可以使用快照。一般来说,尽可能地使
4、用表类型的记录集对象,它的性能通常总是最好的。,2.何为数据库引擎 3.数据库一般设计步骤,二.简介数据库管理器,三.数据控件,1.Data控件 Data控件的有些属性是它所特有的, 用于实现对数据库的访问。数据控件提供 的属性定义了怎样连接数据库以及连接什 么数据库。,(1)Connect属性 Data控件的Connect属性用于定义控件所要连接的数据库类型。,使用Data控件可以连接多种数据库,包括Microsoft Access、dbase、FoxPro、paradox等,Data控件还可以用来访问Excel、Lotus 和标准的ASCII文本文件,Data控件也可以访问和操作远程的OD
5、BC开放式数据库,如Microsoft SQL Server和Oracle等。,【注意】Connect属性以分号(;)结束,分号是JET数据库引擎的分隔符。,(2)Databasename属性 Databasename属性用于返回或设置Data控件的数据源,决定Data控件连接到哪一个数据库上,它通常是一个完整的数据库文件名(带路径)。,对于多表数据库,DataBasename属性是一个具体的数据库文件名,对于单表数据库,DataBasename是一个数据库文件所在的目录,具体的数据库名放在Recordsource属性中。,(3)Recordsource属性 Recordsource属性用来返
6、回或设置Data控件打开的数据库表或满足某个SQL查询语句的表的记录集,它可以是表的名称或者SQL语句。,例如:我们设定data1控件的Recordsource属性为“学生学籍表”,可以访问数据表“学生学籍表”中的全部数据。也可以建立SQL语句,查询某些符合条件的记录,作为Recordsource的属性值,如 Recordsource=“ select *form 学生学籍表 where xb=男”,则表示访问表中所有男生的数据。,当Recordsource属性设置为数据库中某一个表的名称时,表中所有字段对被绑定到Data控件的数据感知控件都是可见的。当Recordsource属性设置为返回记
7、录的SQL语句时,该SQL查询返回的所有字段对被绑定到Data控件的数据感知控件是可见的。,(4)Recordtype属性 Recordtype属性是一个数字值,用于返回或设置Data控件创建的记录集的类型,可以创建3种不同的记录集类型:表类型记录集、Dynaset类型的记录集和快照类型的记录集,如果在Data控件创建Recordset之前没有指定Recordtype,则创建Dynaset类型的Recordset。,表12.4 Data控件的Recordtype属性,(5)Exclusive属性 Exclusive属性返回或设置一个值,确定Data控件的数据库是为单用户打开还是为多用户打开。当
8、选择True时,表示排它地打开,即在应用程序打开数据库之后,其他应用程序不能再打开它;当选择False时,表示允许多用户访问数据库。如果排它地使用数据库,数据库操作会快一些。,(6)Readonly属性 Readonly属性返回或设置一个值,确定控件的DataBase是否为只读访问而打开。如果设为True,表示允许读数据库,但无法修改数据;如果设为False,则表示可以查看和修改数据,False为缺省设置。,(7)Options属性 Options属性返回或设置一个值,说明控件的Recordset属性中一个或多个记录集对象的特性。使用如表12.5所示的列值中的一个或多个来设置Options属性
9、。,表12.5 Data空间的Options属性,续表,如果要设置多个值,可以通过将值相加的方法来组合选项。 例如 Data1.Options=Dbappendonly+Dbinconsistent,(8)BOFAction 和EOFAction 这两个属性返回或设置一个值,指定在记录集的BOF或EOF属性为True时,Data控件进行什么样的操作。它们的语法为: object.BOFaction=integer object.EOFaction=integer 其中object为数据控件对象名,integer为指定操作的整数值。见表12.6所示。,表12.6 EOFaction和BOFact
10、ion 属性设置,Data控件的主要事件 1reposition事件 2validate事件,Data控件的主要方法 1Updaterecord方法 2Updatecontrols方法 3Refresh方法,四.数据库中的对象,1.记录集对象 2.DAO对象 3.ADO对象,记录集对象的属性 1Bof和Eof属性 Bof和Eof属性返回布尔型值,Bof指示当前记录位置位于Recordset对象的第一个记录之前,Eof指示当前记录位置位于Recoedset对象的最后一个记录之后。使用Bof和Eof属性可确定Recordset对象是否包含记录,或者从一个记录移动到另一个记录时超出Recordset
11、对象的限制。,2Recordcount属性 该属性用于指示Recordset对象中记录的数目,它返回长整形数,是只读属性。 如果打开没有记录的Recordset对象,Bof和Eof属性值将为True,而Recordset对象的Recordcount属性值为0。,3Absoluteposition属性 Absoluteposition属性指定Recordset对象当前记录的序号位置,Absoluteposition从1开始,在当前记录为Recordset中的第一个记录时等于1。使用Absoluteposition属性可根据其在Recordset中的序号位置移动到特定记录,或确定当前记录的序号位置
12、。,【注意】不能将此属性作为记录编号使用,因为删除前面的记录时给定记录的当前位置将发生改变,如果Recordset对象被重新查询或重新打开,则无法保证给定记录有相同的Absoluteposition。,4Bookmark和Bookmarkable属性 Bookmark属性返回唯一标识Recordset对象中当前记录的书签,或者将Recordset对象的当前记录设置为有效书签所标识的记录。使用Bookmark属性可保存当前记录位置并随时返回到该记录。,【注意】书签只能在支持书签功能的Recordset对象中使用,即Bookmarkable属性必须为True,Bookmarkable是只读属性。,
13、5Nomatch属性 Nomatch属性指示是否有特定的记录满足Seek方法的约束条件(只适用于表类型的记录集对象)或Find方法的约束条件(只适用于动态集类型或快照类型的记录集对象),返回值为布尔型。如果没有找到满足条件的记录,则返回True,否则返回False。当打开或创建一个记录集对象时,Nomatch属性的初始值为False。,【注意】当使用Seek或Find方法没有找到满足条件的记录时,当前记录变为无效,所以在使用Seek或Find方法前,最好先记下当前记录的Bookmark值,如果没有找到满足条件的记录,则可以使用Bookmark属性值返回原来的记录。,6Fields属性 Fiel
14、ds属性是一个包含在记录集对象中的各个字段对象的集合。Fields(“姓名“).value即是当前记录的姓名字段的值。,记录集对象的方法 (1)Addnew方法 Addnew方法为可更新的Recordset对象创建一个新记录。Addnew方法将添加一条新的空记录。并且定位在该记录上。,例如:Data1.Recordset.Addnew 输入完新记录后,要使用Update方法才能将数据保存到数据库中。在使用Update方法前,数据库中的数据不会发生改变,只有执行Update方法或通过Data控件移动当前记录时,记录才从缓冲区存储到数据库文件中,使用Update方法后,新记录仍保持为当前记录。,(
15、2)Delete方法 Delete方法可将当前记录从记录集中删除。,(3)Edit方法 要编辑修改数据库的记录,首先使要编辑的记录成为当前记录,然后使用Edit方法修改记录内容,使用Edit方法后,移动记录或者使用Update方法把数据存入到数据库中。,(4)Move方法 可以使用各种Move方法移动记录,使不同的记录成为当前记录。,有4种方法: Movefirst:移动到记录集的第一条记录。 Movelast:移动到记录集的最后一条记录。 Movenext:移动到记录集的下一条记录。 Moveprevious:移动到记录集的上一条记录。 Move:可以使用此方法向前或向后移动若干条记录。语法
16、为: Recordset.Move n,Start,其中n是设置向前或向后移动记录的行数,正数表示向后移动n行,负数表示向前移动n行。Start参数为可选,表示基准位置,缺省时为当前记录的位置。可以把当前记录集的Bookmark作为基准位置。,(5)Find和Seek方法 要查找一个符合条件的记录,在Table型的记录集中可以使用Seek方法,在其他类型的记录集中可以使用Find方法。Find方法同Move方法一样也有4种:Findfirst、Findlast、Findnext、Findprevious。,(6)Update 和Cancelupdate方法 Update方法保存对Recordset对象的当前记录所做的更改。使用Update方法可以保存自从调用Addnew方法,或自从现有记录的任何字段值发生更改之后,对Recordset对象的当前记录所做的所有更改。调用Update方法后当前记录仍