资源预览内容
第1页 / 共103页
第2页 / 共103页
第3页 / 共103页
第4页 / 共103页
第5页 / 共103页
第6页 / 共103页
第7页 / 共103页
第8页 / 共103页
第9页 / 共103页
第10页 / 共103页
亲,该文档总共103页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第9章 数据库应用程序开发,9.1 Delphi数据库系统概述 9.2 数据集组件 9.3 基于BDE的数据连接与访问 补充:ODBC和ADO连接 9.4 基于ADO.NET的数据连接与访问 9.5 BDP组件及其使用 9.6 数据控制组件 9.7 主/从表应用程序的开发 9.8 Crystal Report报表工具的使用 结束,本章要点,本章要点,概述Delphi的数据库系统 简单介绍数据集组件的使用 基于BDE的数据连接与访问方法 基于ADO.NET的数据连接与访问 BDP组件 数据控制组件的使用 主/从表的应用开发 Crystal Report报表的创建,返回本章首页,9.1 Delphi数据库系统概述,9.1.1 数据库系统的基本概念 9.1.2 Delphi数据库应用程序的一般结构 9.1.3 Delphi 2005可以访问的数据源 9.1.4 Delphi 2005中的数据库组件,返回本章首页,9.1 Delphi数据库系统概述,9.1.1 数据库系统的基本概念 数据库系统主要由如下三部分组成: (1)数据库管理系统即DBMS(DataBase Management System),它是专门负责组织和管理数据信息的软件,如SQL Server 2000等; (2)数据库应用程序,利用它能够获取、显示和更新由DBMS存储的数据,如利用Delphi开发的应用软件; (3)数据库,即按一定结构组织在一起的相关数据的集合。,9.1 Delphi数据库系统概述,DBMS主要有四种类型:文件管理系统、层次管理系统、网状数据库管理系统和关系数据库系统,目前广泛应用的是关系数据库系统。 DBMS和数据库应用程序可以驻留在同一台计算机上,也可以分开。随着网络的飞速发展,而使数据库系统向客户机/服务器模式发展的要求越来越强烈,数据库应用程序现在可以运行在多个客户机上,通过网络与服务器上的多个DBMS进行通信。由于C/S模式的数据库系统能将DBMS和数据库应用程序分开,因此可以大大提高数据库系统的处理能力。,返回本节,9.1 Delphi数据库系统概述,9.1.2 Delphi数据库应用程序的一般结构 用Delphi开发的数据库应用主要包括桌面数据库应用和基于客户机/服务器(C/S)模式的数据库应用两种。在桌面数据库应用中,DBMS和数据库应用程序都驻留在同一台计算机中。随着技术的进步,目前,大部分数据库应用都开始采用C/S模式,而且是多个Client和多个Server,通过通信网络进行管理和应用。随着网络技术的不断发展,多层数据库结构(Multi_Tiered Client/Server Application)也会逐步得到推广。 常用的数据库应用程序的结构可以用下图说明:,9.1 Delphi数据库系统概述,9.1.2 Delphi数据库应用程序的一般结构 在单层的数据库应用程序中,除了可以直接访问本地数据库外,还可以通过客户数据集(Client DataSet)直接与计算机硬盘内的一个文件直接连接。这种结构的数据库应用不需要任何的数据库服务器,因为Client DataSet本身就可完成对文件的读写操作,如图9-2所示。,返回本节,9.1 Delphi数据库系统概述,9.1.3 Delphi 2005可以访问的数据源,返回本节,9.1 Delphi数据库系统概述,9.1.4 Delphi 2005中的数据库组件,在Delphi 2005中,我们可以使用VCL或VCL.NET组件编写Win32或.NET框架下的VCL Forms应用程序,也可以采用.NET组件编写.NET框架下的 Windows Forms、ASP.NET Web、Web 服务等应用程序。不论是VCL、VCL.NET还是微软的.NET框架都提供了相应一些数据库组件,以用于不同类型的数据库应用程序的开发。其中用于VCL Forms应用程序开发的数据库组件主要有Data Access(数据访问组件)、Data Controls (数据控制组件)、dbExpress、DataSnap、BDE、dbGo(ADO)、InterBase组件等等。 此外,在Delphi 2005中还可用ADO.NET或BDP.NET组件开发基于.NET的Windows Forms、ASP.NET Web数据库应用程序。下面是有关这两种组件的简要说明: ADO.NET组件:微软专为.NET框架设计的数据库连接访问组件,它基于原有的ADO技术,能以统一方式访问多种数据源。 BDP (Borland Data Provider):是Borland公司开发的一套用于支持微软.NET框架的高效数据库连接访问组件。,返回本节,9.2 数据集组件,在BDE(包括BDE.NET)中,有三种类型的数据集组件:TTable,TQuery,TStoredProc。这三种类型的数据集组件的直接上级是TDBDataSet类,而TDBDataSet类的直接上级是TBDEDataSet类,而TBDEDataSet类是从TDataSet类继承下来的。 dbGO提供的数据集组件主要有:TADODataSet、TADOTable、TADOQuery、TADOStoredProc。 dbExpress提供的数据集组件主要有:TSQLDataSet、TSQLTable、TSQLQuery、TSQLStoredProc和TSimpleDataSet。,9.2 数据集组件,1数据集的状态(State属性) 当应用程序对数据库中的数据进行操作时,不同的操作对应着数据集不同的状态。数据集可能的状态及其含义说明如下: 非活动状态(dsInactive):数据集对应的表处于关闭状态。 浏览状态(dsBrowse):缺省情况下,当数据集打开时处于此状态,此时只能浏览数据,不能修改或插入数据。 编辑状态(dsEdit):能够浏览表中的记录而且能够修改当前的记录或删除记录。 插入状态(dsInsert):能够通过数据集在表中插入一条新记录或删除记录。 查找状态(dsSetKey):在该状态下,可以调用FindKey,GotoKey,GotoNearest,FindNearest方法查找表中的记录,此状态只适用于TTable和ClientDataSet组件。 处理计算字段状态(dsCalcFields):当在数据集组件中设置了计算字段,并且当组件的OnCalcFields事件处理过程被执行时,Delphi会自动将数据集组件置为CalcFeilds状态,以防止其他非计算字段的值被修改。 筛选状态(dsFilter):数据集正处于筛选状态。,各种状态的转换关系图(补充),(1)打开数据集: Active 属性:=True 执行 Open 方法 例如: Table1.Active:=True; Query1.Active:=True; 或: Table1.Open; Query1.Open; (2)关闭数据集: Active 属性:=False 执行 Close 方法 例如:Table1.Active:=False; Query1.Active:=False; 或: Table1.Close; Query1.Close;,2数据集的打开和关闭,通过属性,通过方法,3数据集的浏览,表9-2 数据集的浏览方法,表9-3 数据集的浏览属性,4数据集中的数据维护(1),表9-3 数据集中数据维护的方法,4数据集中的数据维护(2),示例:数据集的维护代码准则,有关书签操作,Delphi提供了三个方法: GetBookMark GotoBookMark FreeBookMark GetBookMark方法返回一个TBookMark类型的变量,该变量包含着指向当前数据记录的指针; GotoMark方法用于快速地将记录指针定位到具有书签的记录处; FreeBookmark方法是与GetBookMark方法相反的操作,它用于释放书签标志。 例如书签的使用(下图):单元文件源代码,5数据集的书签,数据集有一个Filter属性,可以定义一个过滤器。当过滤器生效后,将过滤掉不满足过滤条件的记录,而只有那些满足过滤条件的记录才能返回。因此,在应用程序界面中用户能能访问(浏览、编辑、修改等)的都是符合过滤条件的记录。设置过滤器条件的方法是,在Filter属性的文本框中键入字段名和其取值的关系表达式,如 “Name = 张涛”,然后将数据集的Filtered属性设置为True,当应用程序运行时,数据控制组件中显示的就是符合该“Name”字段要求的记录。 例如: with Table1 do begin Disablecontrols; /切断Table1与数据控制组件的联系 Filtered := False; /使过滤器失效 Filter := StudentName = + + Edit1.Text +; /设置过滤器条件 Filtered := True; /使过滤器生效 Enablecontrols; /恢复 Table1与数据控制组件的联系 end;,6数据集的过滤,数据集组件具有三个方法,用于控制数据集组件和与其相连的数据控制组件之间的连接,以及控制数据控制组件的显示。它们是: DisableControls方法,用于切断数据集组件与数据控制组件的连接 例如:Table1.DisableControls; EnableControls方法,作用与DisableControls方法的作用是相反的,调用EnableControls方法,使数据集组件恢复与数据控制组件的连接 例如:Table1.EnableControls; Refresh方法,用于刷新数据控制组件中的显示,7数据集组件与数据控制组件的连接, BeforeOpen/Afteropen, 在数据集组件打开之前/之后被触发。 BeforeClose/Afterclose , 在数据集组件关闭之前/之后被触发。 BeforeInsert/AfterInsert, 在数据集组件进入插入状态之前/之后被触发。 BeforeEdit/AfterEdit, 在数据集组件被编辑之前/之后被触发。 BeforePost/AfterPost, 在数据集组件保存被修改的记录之前/之后被触发。 BeforeCancel/AfterCancel, 在数据集组件取消进一步操作之前/之后被触发。 BeforeDelete/AfterDelete, 在数据集组件删除当前记录之前/之后被触发。 OnNewRecord, 当建立一条新记录时被触发。 OnCalcFields, 当为表中的计算字段计算字段值时被触发。,8 数据集组件的事件,返回本章首页,Browse,Insert,Setkey,Inactive,Edit,Close,Open,Insert Append,Post(成功) Delete,Setkey* Editkey*,Cancel Gotokey,Findkey Post,Cancel Delete Post(成功),Edit,Post(不成功),Post(不成功),返回,各种状态的转换关系图(补充),9.3 基于BDE的数据连接与访问,9.3.1 BDE简介 9.3.2 BDE Administrator及数据库别名的创建方法 9.3.3 使用BDE组件访问数据 9.3.4 TDataSource组件及其使用,返回本章首页,9.3 基于BDE的数据连接与访问,9.3.1 BDE简介 BDE(Borland Database Engine)是Borland公司早期开发的一种数据存取引擎 BDE具有以下一些特点: BDE采用的是基于驱动程序的体系结构,几乎为所有的数据库提供了驱动程序,可以对所有的数据库,包括本地数据库和远程数据库服务器以及任
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号