资源预览内容
第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
第9页 / 共30页
第10页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
DELPHI程序设计基础教程,第十章 数据库编程基础,2019年5月24日星期五,DELPHI程序设计基础教程,第十章 数据库编程基础,本章学习导读 10.1 Delphi数据库编程基础 10.2 数据源组件DataSource 10.3 数据集组件DataSet 10.4 BDE数据集组件 10.5 ADO组件 10.6 数据控制组件 本章小结,2019年5月24日星期五,DELPHI程序设计基础教程,本章学习导读,Delphi最强大的地方就在于对数据库的支持,Delphi可以访问多种数据库管理系统的数据库,可以访问诸如Paradox、dBase、本地InterBase服务器的数据库,也可以访问如Oracle、Sybase等远程数据库服务器上的数据库,或任何经ODBC可访问的数据库管理系统中的数据库。 本章首先对Delphi数据库的编程基础做简单介绍,然后通过向导实际的建立一个数据库应用程序,接着详细介绍常用的数据组件的使用方法,最后介绍了通过ODBC访问数据库的方法。,2019年5月24日星期五,DELPHI程序设计基础教程,10.1 Delphi数据库编程基础,数据库应用程序的构成 一个数据库应用程序通常由两部分组成:数据库访问链路和用户界面。Delphi采用开放式数据库体系结构,允许用户采用任何可获得的数据库引擎来创建数据库程序。 Delphi使用可视化组件创建数据库应用程序,和创建其他应用程序一样,数据库组件同样具有一定的属性,程序员可以在设计过程中设置组件的各种属性,也可以在程序运行过程中通过代码来改变数据库组件的各种属性。,2019年5月24日星期五,DELPHI程序设计基础教程,10.1 Delphi数据库编程基础,数据库引擎BDE、ADO简介 1BDE数据库引擎 BDE数据库引擎(Borland Database Engine)是Borland公司推出的一种特有的用于访问数据库的机制,它可以让多个程序共享,为应用程序与数据库的连接提供了灵活性和通用性。BDE中封装了各种数据库驱动程序,可以访问本地数据库Paradox、dBase、FoxPro和Access,通过SQL Links驱动程序又可以访问远程数据库如InterBase、Oracle、Sql Server和DB2。BDE支持的面很广,因为它可以连接到ODBC,而ODBC本身就可以支持很多数据库,所以凡是ODBC可以连接的数据库,BDE都可以连接。 BDE的基本构思是把应用程序与具体的数据库隔离开,提供一个统一的结构供用户使用,应用程序不再直接与具体的数据库打交道,而是向BDE提出操作数据库的申请,由BDE具体操作数据库,并把结果返回给应用程序。,2019年5月24日星期五,DELPHI程序设计基础教程,10.1 Delphi数据库编程基础,2ADO数据库引擎 ADO数据库引擎(ActiveX Data Object)是微软推出的一套数据库访问规范。它使应用程序能够通过一种叫做OLE DB提供者(OLE DB Provider)的驱动程序访问和操作数据库, OLE DB是微软定制的通向不同的数据源的低级应用程序接口,OLE DB不仅包括微软的标准数据接口开放数据库连通性(ODBC)的结构化问题语言能力,还具有面向其他非SQL数据类型的通路。OLE DB也是一个基于COM的数据访问规则和API函数的集合,并经过了简化。实际上,ADO以ActiveX组件的形式封装了OLE DB,以提供一个更友好方便的使用方式。,2019年5月24日星期五,DELPHI程序设计基础教程,10.2 数据源组件DataSource,数据源组件的属性 数据源(DataSource)组件是连接数据集组件(如Table、Query、StoredProc)与数据控制组件的桥梁,数据控制组件的DataSource属性指定数据源,而数据源的DataSet属性指定数据集。使用DataSource组件,必须设置它的DataSet属性,这是用来指明一个与当前数据源组件相联系的已知数据集组件的名字,其它属性可以根据需要设定。数据源组件位于工具栏的Data Access选项卡。 (1)DataSet DataSet属性是用来指明一个与当前数据源组件相联系的已存在的数据集组件的名字。可以在设计阶段通过对象检视器来设置DataSet属性,也可以在运行时通过代码修改该属性值。应用程序通过改变DataSet属性可以实现在同一个数据控制组件中显示和编辑不同数据集组件中的数据。 (2)Enabled Enabled属性决定了与此数据源组件相连的数据控制组件是否显示数据,如果Enabled属性值为默认值True,数据控制组件将显示数据,如果Enabled属性值为False,则所有与此数据源组件相连的数据控制组件都将不显示任何数据。 (3)State State属性是用来读取与此数据源组件相连的数据集组件的当前状态。数据集组件的当前状态表明了能对数据集所做的操作。,2019年5月24日星期五,DELPHI程序设计基础教程,10.2 数据源组件DataSource,数据源的方法 DataSource组件的方法使用的比较少,只需了解即可 (1)Create 调用Create方法会创建一个DataSource组件 (2)Edit Edit方法可使与数据源联系的数据集进入编辑状态,可以通过修改数据源的AutoEdit属性来实现该功能。,2019年5月24日星期五,DELPHI程序设计基础教程,10.2 数据源组件DataSource,数据源的常用事件 (1)OnDataChange 当与该数据源组件相连的数据集的当前记录被编辑后,应用程序转移到其它字段或者转移到其它记录时触发该事件。由于该事件可被所有变化触发,所以能确保数据控制组件反映当前数据集中的字段值。 (2)OnStateChange 当与数据源连接的数据集状态发生改变时会触发该事件。 (3)OnUpdateData 当前的记录被更新时触发该事件,该事件在数据集的Post方法之前被调用,一般用于在数据提交前进行附加的处理和确认操作。,2019年5月24日星期五,DELPHI程序设计基础教程,10.3 数据集组件DataSet,数据集的打开与关闭 在Delphi中,访问数据的基本单元是数据集对象,应用程序也是通过数据集组件来访问数据库。一个数据集对象就代表了数据库的一张表格,或者是访问数据库的一个查询或存储过程。 数据集组件DataSet是一个抽象类,定义了一些关于数据集的基本属性、方法和事件。在应用程序中实际使用的是它的子类Table、Query、StoredProc、ADOTable、ADOStoredProc等组件。Table、Query和StoredProc组件位于工具栏的BDE选项卡。 Active属性用来说明数据库文件的打开状态。应用Active属性来决定及设定一个数据集组件与数据库数据之间的关系。当Active属性值为True时,表明数据集是打开的,数据集组件可以对数据库进行读写操作,否则表示数据集是关闭的,数据集组件不能从数据库读取数据,也不能向数据库中写数据。应用程序在改变其它影响数据库状态或在应用程序中显示数据的组件状态的属性之前,必须先将Active属性设置为False。,2019年5月24日星期五,DELPHI程序设计基础教程,10.2 数据源组件DataSource,对数据集的数据读、写都必须先打开数据集,打开数据集有两种方法: (1)将Active属性值设置为True; (2)调用数据集的Open方法。 关闭数据集同样有两种方法: (1)将Active属性值设置为False; (2)调用数据集的Close方法。,2019年5月24日星期五,DELPHI程序设计基础教程,10.3 数据集组件DataSet,数据集状态 State属性是用来读取与此数据源组件相连的数据集组件的当前状态。数据集组件的当前状态表明了能对数据集所做的操作。当Enabled属性值为False或者没有指定DataSet属性的情况下,无论数据集组件的实际状态如何,State属性总是为dsInactive。其它情况下State属性值与数据集的当前状态一致。,2019年5月24日星期五,DELPHI程序设计基础教程,10.3 数据集组件DataSet,数据集的浏览 (1)BOF和EOF属性 BOF(Beginning of File)属性值为一个布尔值,表明当前记录指针所处的位置是否为记录集的第一个记录。如果BOF为True,表明当前记录指针所处的位置确实是数据集的第一个记录。 EOF(End of File)属性值为一个布尔值,表明当前记录指针所处的位置是否为记录集的最后一个记录。如果EOF为True,表明当前记录指针所处的位置确实是数据集的最后一个记录。 (2)First方法 在DataSet的派生类中,调用First方法将记录指针移至数据集的第一条记录处,并使之成为当前记录。同时将BOF属性值设置为True。 (3)Last方法 Last方法与First方法非常相似,只不过Last方法是将记录指针移至数据集的最后一条记录处,并使之成为当前记录。它将EOF属性值设置为True。,2019年5月24日星期五,DELPHI程序设计基础教程,10.3 数据集组件DataSet,(4)MoveBy方法 MoveBy函数的基本格式如下:function MoveBy(Distance:Integer):Integer; 调用MoveBy方法是将记录指针指向数据集中与当前记录相关的一条记录处,Distance是指需要移动的记录数目。距离是正值表明在数据集中朝前移动,负值表明是朝后移动。 (5)Next方法 调用Next方法将记录指针置于数据集中的下一条记录,并使之成为当前记录。如果记录指针已处于数据集的最后一条记录,就将EOF属性值设置为True。 (6)Prior方法 Prior方法与Next方法非常相似,Prior方法将记录指针置于数据集中的上一条记录,并使之成为当前记录;如果记录指针已处于数据集的第一条记录,就将BOF属性值设置为True。,2019年5月24日星期五,DELPHI程序设计基础教程,10.3 数据集组件DataSet,对数据集进行的操作 (1)Append 调用Append方法不仅可以在数据集的末尾建立一个新的空记录,还可以将新的记录设置为当前记录。在调用Append方法后,应用程序允许用户向记录的字段中输入数据,并且能够通过调用Post方法将这些更改提交给数据库。 (2)Cancel 调用Cancel方法可以用来取消对当前记录中一个或多个字段的修改。在这些更改还未提交给数据库时,Cancel方法使记录恢复到修改前的状态,并将数据集置于dsBrowse状态。 (3)Delete 调用Delete方法用来将当前记录从数据库中删除。如果该数据集处于激活状态,Delete方法将产生一个异常事件。 (4)Edit 调用Edit方法用来编辑数据集中的当前记录。 (5)Insert 调用Insert方法不仅可以在数据集中打开一个新的空记录,还可以将新的记录设置为当前记录。在调用Insert方法后,应用程序允许用户向记录的字段中输入数据,并且能够通过调用Post方法将这些更改提交给数据库。 (6)Post 调用Post方法用来向数据库提交一个修改的记录。数据集中编辑修改数据库数据的方法如Edit、Insert或Append,以及浏览数据库中数据的方法如First、Last、Next和Prior都会自动的调用Post方法。,2019年5月24日星期五,DELPHI程序设计基础教程,10.3 数据集组件DataSet,数据集的字段 字段组件代表了数据集中各个独立的字段,Delphi中定义了字段类Field及其相关的属性和方法,并提供了Field的派生对象。字段组件是非可视组件。一般来说,一个简单的字段组件用来表示数据表中的字段特征,如数据类型和字段大小。它也用于
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号