第六章 VB数据库访问技术.ppt
《第六章 VB数据库访问技术.ppt》由会员分享,可在线阅读,更多相关《第六章 VB数据库访问技术.ppt(104页珍藏版)》请在三一办公上搜索。
1、第六章 VB数据库访问技术,教学目的:掌握VB数据库访问技术。理解VB语言、SQL语句。将SQL语句“嵌入”到VB语言中,采用ADO数据模型开发数据库应用程序。教学内容:VB数据库访问技术概论 ADO数据对象(ActiveX Data Objects)上机及作业,VB数据库访问技术的概论,VB数据对象及数据库访问机制数据引擎VB中数据库类型在VB中常用的数据库引擎数据库访问方式数据对象补充内容:数据库基本概念创建数据库数据管理器利用“数据窗体向导”快速建立数据访问界面,访问内容:对数据库进行“增删改查”操作,VB数据对象及数据库访问机制数据引擎:,数据库应用程序属于一种非常典型的前后台软件结构
2、前台就是我们用开的VB程序后台则是数据库管理系统(如SQL Server)或数据文件(如Access数据文件)而前后台之间进行通信的主要机制称为数据库引擎,VB中将数据库分为了三种类型:,(1)本地数据库:主要指Microsoft Access数据库。(2)外部数据库:是指采用ISAM(Indexed Sequential Access Method,索引顺序访问方法)的数据库,比发dBase、Foxpro、Paradox和Execle等。(3)远程数据库:指SQL Server、Oracle、DB2等大型数据库,当前的大型数据库应用程序基本上都是以这类数据库为后台。,在VB中常用的数据库引擎
3、有三种,1Jet引擎:联合数据库引擎,是Microsoft公司开的用于本地数据库(比如Access)、外部数据库(比如dBase、Excel、Paradox)的数据库引擎。它也可以访问远程数据库(比如SQL Server、Oracle),但必须通过ODBC来转接。,2ODBC:,开放式数据库连接,是一种建立数据库驱动程序的标准,当前几乎所有的DBMS都支持这种数据库引擎。ODBC是在数据库和应用程序之间提供的一个抽象层,即通过驱动程序和游标库来和数据库进行通信。这样,通过ODBC就可以使用本地化的协议来访问所有支持ODBC的数据库了。,3OLE DB:,Microsoft公司于1996年提出了
4、一种新的数据库访问策略UDA(Universal Data Access),它的核心是一系列组件对象模型(COM)接口,被命名为OLE DB。这些接口允许开发人员创建数据库提供者(Data Providers)。数据提供者能够很灵活地表达各种格式存储的数据,通用性比ODBC更好、更灵活。,数据库访问方式数据对象,(1)DAO对象(Data Access Objects,数据访问对象):可以使用Jet引擎和ODBC两种方式访问数据库。(2)RDO对象(Remote Data Objects,远程数据对象):一般采用ODBC来访问数据库。(3)ADO对象(ActiveX Data Objects,
5、ActiveX数据对象):主要采用OLE DB访问数据库,也支持ODBC访问,但需要经过OLE DB转接。,ADO对象模型,ADO是Microsoft公司提出的第三种数据库访问对象,是Microsoft数据库访问技术的一个主要发展方向,它把OLE DB封装在一个数据对象中,使得VB程序可以方便地实现对数据库的访问。,ADO与其他两种对象模型的主要区别在于它的简单和非层次结构。这种对象模型共包含7个对象,即Connection、Command、Recordset、Parameter、Property、Field和Error。其中最常用的是Connection、Command、Recordset和
6、Field四个对象。,数据库原理示意,数据库,数据库基本概念1,数据库(DataBase)、关系型数据库管理系统(R-DBMS)表结构一个数据库文件可以包含一个或多个表每个表均有一个表名各表之间可以存在某种关系比如:学生.MDB 个人信息(学号,姓名,班级,年龄,-)成绩(学号,科目代号,成绩)科目(科目代号,科目名称)记录和字段列-字段(FIELD)行-记录(RECORD),数据库基本概念2,关键字(KEY)能够唯一识另一条记录的最小属性集具有唯一值,不能为空侯选关键字、主关键字、外关键字表与表之间的关联是通过关键字完成的表间的关联表之间的关系是按照某一关键字建立的一个表中的记录同另一个表中
7、记录之间的关系根据数量对应关系,分为一对一、一对多、多对多索引(INDEX)一个表可以按照某种特定的顺序进行保存或排列主索引、唯一索引,结构化查询语言(SQL),SELECT语句的基本形式如下:SELECT FROM WHERE GROUP BY HAVING ORDER BY ASC|DESC,数据管理器1,数据库的创建/打开 表结构的创建,图5-5 可视化数据管理器,图5-6“数据库管理”界面,数据管理器2,“表结构”设置,使用DE环境访问数据库方式使用Data控件,绑定约束控件访问数据库方式通过SQL字符串,访问数据库,ADO对象(ActiveX Data Objects),使用Data
8、控件访问数据库,1定义:用运用DATA控件访问DB是一种编程很少,但却能快速访问DB表的手段,为此VB提供了两种工具:其一为Data控件,用于定义数据源;其二为Bound约束控件,用于定义数据源的输 入输出界面。这种方式具有编程简单,易学易用的优点,适合开发原型及小型数据库系统的应用。如图2Data控件 3data控件的约束数据(bound控件),作业,DB,如图,人号:_ 人名:_ 年龄:_ 人员纪录,Data控件,1)名字:Data(n)2)功能:(定义数据源)通过Data控件无须编程,直接访问由其属性定义的数据源;Data控件有四个导航器,用于显示域上移动被显示的内容,相当于顺序查找;被
9、显示内容可在屏幕上直接修改,当导航器从当前记录移动后,被修改既被接受。,3)后台位置动作:,把Data控件关联的数表全部调入内存。如下图所示:,约束控件(Recordset)内存 data Data控件 Data1,DB,4)用ADO方式建立DB应用程序的步骤,那么如何设置Data控件属性,及约束控件与Data的某字段的关联?,建立Form,把Data控件放入Form中,设置Data控件属性,建立对数据库的连接,向Form上添加约束控件,使其与Data控件记录集的某个字段关联,放入其他需要的控件,并编写有关事件过程,ADO数据控件使用方法及步骤:,(1)建立逻辑数据库(ODBC数据源)(2)“
10、部件”中加入“ADO Data Control6.0”(3)窗体上放置一个 ADO Data 控件(AdoDcUser),建立与数据库及表的连接。I.在“属性”窗口中,单击“ConnectionString”打开“ConnectionString”对话框,设置ODBC 数据源名。II.在“属性”窗口中,将“RecordSource”属性设置为一个表名或SQL语句。例如:SELECT*FROM Tbl_User;,(4)建立ADO Data控件与用户界面控件的绑定。I.在窗体上放置一个Text控件II.DataSource属性设为AdoDcUser,将该文本框与ADO Data控件绑定III.D
11、ataField属性设置为该文本框要显示字段的名称,如Name。IV.DataFormat属性设置该文本框显示数据的格式(类型)添加其他数据绑定控件Combo,Grid等(方法同上)。下拉列表框中项目添加仍需用AddItem方法。注:DE环境同样可做此绑定设置。,5)Data控件的子对象,data对象 库的表、视图、查询 Record set 记录集 Field 表项、字段,6)Data控件的及其子对象的属性Conect:Database name:Recordsource:Recordset:Recordtype:EOF/BOF recordcount:Bookmark:fields:7)方
12、法(Data的子对象Recordset对象的方法、Data控件的方法),调用:.,Conect:定义关联的DBMS的名字,其缺省值为ACCESS。Database name:定义所关联用户数据库名字,包括所有的路径名。如人事库、学生库等。Recordsource:定义关联的表名字、视图的名字或查询表名字,也可直接写Select语句,从表中抽出数据集合。Recordset:记录对象,也可看为属性,通过属性可直接访问由Data控件调入内存的所有数据。命令格式为:.。因此Recordset是一种浏览数据库的工具,也视为内存中对表的查寻结果。,Data控件的属:,Recordtype:确定记录集类型,
13、描述数据集合的特征。Recordtype=0-tables,定义数据源可以修改,支持索引。1-Dynasets,数据源可以修改,用于表的查寻。2-Snapshots,数据只读属性,使用成本低。EOF=Ture-recordset记录集中当前记录在文件尾;False-recordset记录集中当前记录不在文件尾BOF=Ture-recordset记录集中当前记录在文件头;False-recordset记录集中当前记录不在文件头。注意:如图所示:头、尾记录为空白记录,限制导航器的 移动。调用格式:Data1.recordset.eof/bof,Data控件的子对象属:,recordcount:re
14、cordset记录集中的记录个数。Bookmark:系统给予recordset 每一行的唯一标签。其标志与记录集的顺序无关。属性调用格式:.fields(n):表示调用Recordset的某个字段 属性调用格式:.fields(n),Data控件的子对象属:,Data的子对象Recordset对象的方法:,无条件顺序移动move方法 有条件的查找Find方法 数据库记录的编辑方法 索引查找,无条件顺序移动move方法,格式:功能:按记录的物理顺序进行顺序移动其中movefirst将记录定位到第一条记录;movelast将记录移到最后一条记录;moveprevious将记录移到当前记录的前一条记
15、录;movenext将记录移到当前记录的下一条记录。调用:.Recordset.,有条件的查找Find方法,格式:其中条件为逻辑表达式。功能:findfirst在recordset中将记录定位到满足条件的第一个记录;findlast在recordset中将记录定位到满足条件的最后一个记录;findprevious在recordset中将定位到满足条件的记录的前一个记录findnext在recordset中将定位到满足条件的记录的后一个记录;调用:.recordset.find.如果找不到,需要做容错处理,使用nomatch方法表示find查找失败。,数据库记录的编辑方法,addnew:增加一个
16、空白记录到文件尾部;delete:删除recordset中当前记录;edit:使当前记录处于可以修改的状态;update:将当前记录写入数据库中;refresh:同上。使用格式:.,索引查找,格式:Seek“运算符”,变量值。如Seek“=”,“004”。使用条件:在使用Seek前相应的索引文件必须打开。打开索引文件的格式为:.recordset.index=”索引文件的关键字段名”例如,.recordset.index=”primarykey”.recordset.index=”职称”seek文件建立的策略:在经常性查找和使用的时候需要建立seek文件,因为系统的开销大。而只找一条记录时使用
17、find。,Data控件的方法,Refresh方法:功能:刷新多用户环境下内存Recordset中的内容,重新抽取一次内容。Updaterecord方法:功能:把data控件内容保存到数据库中。经常用于save按钮的使用。不能触发error事件,但update能触发error事件。能触发validata事件。Updatecontrols方法:清除对当前记录的当前修改。,data控件的约束数据(bound控件),定义:用于把data控件记录集中当前记录显示/编辑的区域,即输入/输出区域。常用约束控件:Label,text,checkbox,optionbutton,listbox,combobo
18、x,msflexgrid等控件可以作为约束控件。属性(反应约束控件与Data的某字段的关联):Datasource:反映约束控件对应的实际数据源。如表、视图等。Datafield:表示所绑定的数据源recordset的某个字段。注意几点:,注意几点:,利用Msflexgrid为约束控件只需定义Datasource属性既可以。利用Listbox、Combobox作约束控件,其Datasource、Datafield属性都不用定义,必须写一段程序完成数据的装入,程序如下:data1.refresh data1.recordset.movelast data1.recordset.movefirst
19、 for i=1 to data1.recordset.recordcount list1.additem data1.recordset.field(“名”)data1.recordset.movenext next,约束控件的使用方法及其步骤:,创建窗体form并放入约束控件及Data控件;修改约束控件的某些属性,特别是定义Datasource和Datafield属性,来创建约束对象与Recordset的字段关联;Data1.connect/databasename/recordsouce/recordsettype 约束控件.datasource=data1,约束控件.datafield
20、=au_id 放入其他控件并编写事件过程。,DATA控件触发事件Error、Validate:,功能:该事件的处理过程中常用于数据有效性和完整性控制。触发时机:使用data控件导航器移动记录值使用Move 方法使另一条记录成为当前记录之前使用update更新数据时,当把物理数据库真正更改之前被触发使用Delete,close,Unload(关闭窗口)操作之前被触发按updateRecord事件不触发validate,将触发Dberro事件该方法用于保存记录的按钮的事件程序中 例子,例:检查某文本框Text,(其值将修改某个表)的值发生变化后询问用户是否要保留修改。,Private Sub Da
21、ta1-validate(Action AS integer,Save AS Boolean)Dim Ans AS integcr IF text1Data Changed Then Ans=Msgmox(“文本内容已修改,是否保留?”VbYesNo)IF ans=vbyes Then Save=True(保留修改)Else Text1Datachanged=F(不保留修改)ENDIF ENDIFEND Sub,例题1 建立Data控件与Bible下Authors表关联,做三个约束控件与Authors三个变量关联,运行并利用Data控件导航器浏览内容,补充资料:VB带的两个数据库:1Bible
22、(title,author,title author,publisher,all titles)Author(au_id,authour,year born)Publisher(pub_id,name,company,address,city,state,zip,telephone,fax,commend)Title(title,year publish,isbn,pubid,descriptic,notes,subject,comments)Title author(isbn,au_id)All titles(title,isbn,author,year pub,company)2Nwind
23、数据库结构请同学自己整理出来。,建立如图所示的界面,其中:有3个label控件,3个text控件,1个data控件。,Data1控件属性设置如下:Data1.connect=access Data1.databasename=”c:vb98bible.mdb”Data1.recordsouce=authors Data1.recordsettype=tablelabel控件属性设置如下:Label1.caption=au_id;Label2.caption=author;Label3.caption=year born。,text控件属性设置如下:Text1.datasource=data1,
24、Text1.datafield=au_id;Text2.datasource=data1,Text2.datafield=author;Text3.datasource=data1,Text3.datafield=year born。设置完成上述控件属性后,运行。利用data控件的导航器观察数据库记录的内容。,上机练习内容:,1利用move方法。要求程序运行时将data控件隐藏,对c2及c3做容错处理。利用导航器实现对”year born”的赋值。(year born=1000+2利用导航器及关键字段实现对authors 的增、删、改操作。3Find 及seek的使用。在authors中查找某
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六章 VB数据库访问技术 第六 VB 数据库 访问 技术

链接地址:https://www.31ppt.com/p-2971341.html