第十三章 Delphi开发数据库应用程序概述(二)
13.3.2 数据控制部件
数据控制部件页上的部件,主要用于设计用户界面,对数据库中的数据进行浏览、编辑、插入、删除等操作。因而数据控制部件常常又被称为数据浏览部件,数据控制部件其实是在Standard页上的标准部件的基础上,相应地增加了数据浏览功能,使得它们能够显示和编辑数据库中数据信息。
数据控制部件既能够把数据库中的数据显示到窗体中,又可以将其自身的经过修改的数据写回到数据库中。下表列出了数据控制页上的数据控制部件及它们的主要用途。
表13.5 数据控制部件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部件名称 主 要 用 途
───────────────────────────────
使用该部件可以向前向后移动记录指针,可以使
TDBNavigator 用该部件对单条记录进行编辑,还可以用它来插
入、删除记录以及刷新显示和取消前一次的操作
───────────────────────────────
它是显示数据库中的数据的文本框,它只能显示
TDBText 数据库表当前记录的字段值,用户不能对其中的
数据进行修改。
───────────────────────────────
它是显示和编辑数据库表中的数据的编辑框,它
TDBEdit 既可以显示又可以编辑数据库表中当前记录的字
段值。
───────────────────────────────
TDBCheckBox 它是浏览数据库中的数据的检查框,它可以用来
显示和编辑数据库中的布尔型字段的字段值。
───────────────────────────────
TDBListBox 它是浏览数据库中的数据的列表框,它可以用一
个列表框来显示数据库表中一个字段的值。
───────────────────────────────
TDBComboBox 它是浏览数据库中的数据的组合框,它可以用一
个组合框来显示数据库表中一个字段的值。
───────────────────────────────
TDBRadioGroup 它是浏览数据库表中的数据的单选钮,用一组单
选钮可以确定显示数据库表中哪一个字段。
───────────────────────────────
TDBGrid 它是浏览数据库中的数据的网格,以网格的方式
显示数据库中的数据,在网格中还可以对数据库
中的数据进行编辑。利用Fields Editor可以对
数据库表中字段的显示格式、显示顺序、是否显
示等进行控制。
───────────────────────────────
TDBMemo 它主要用于浏览数据库中备注型的字段,它可以
用来显示数据库表中当前记录中的BLOB型字段。
───────────────────────────────
TDBImage 它是浏览数据库中的数据的图像框,它可以用于
显示、拷贝、粘贴据库表中图像类型的字段。
───────────────────────────────
TDBLookUpList 它是浏览数据库表中的数据的列表框,在基于一
个数据库表的应用中,用它可以显示另一个数据
库表中一个指定的字段值。
───────────────────────────────
TDBLookUpCombo 它是浏览数据库表中的数据的组合框,在基于一
个数据库表的应用中,用它可以显示另一个数据
库表中一个指定的字段值。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
数据控制部件为开发Delphi数据库应用程序提供可视化的用户界面,不管应用程序是访问本地数据库中的数据文件,还是访问远程数据库服务器中的数据文件,用户界面都是一致的,即数据库的物理位置对数据控制部件是透明的。
13.3.3 数据库窗体专家和数据库操作台(DBD)
Delphi为用户开发简单的数据库应用程序提供了一个开发工具叫做“数据库窗体专家”(Database Form Expert),在Delphi系统菜单Tool菜单下可以找到。
数据库窗体专家能够自动生成简单的数据库应用程序中所必须完成的许多任务,它还可以生成基于单个数据库表的应用程序窗体或基于主要──明细型多个数据库表的应用程序窗体,数据库窗体专家能够自动完成的任务如下:
放置数据库部件到窗体中(TDataSource部件)
为数据集部件(TTable、TQuery)和磁盘上的数据库建立连接
建立数据源(TDataSource)与数据控制部件的连接,数据源(TDataSource) 与 数据访问部件(TTable、TQuery)的连接
为TQuery部件编写SQL语句
为窗体中的部件定义Tab顺序
数据库操作台(DBD)是数据库维护和数据定义工具,程序设计人员利用它可以查询、连接、建立、重构、索引、修改和拷贝数据库表,包括Pà€aradox和dBASE文件和基于 SQL语言的数据库表。而且在使用DBD操作Paradox或dBASE的表时,用户不必拥有 Paradox 或dBASE数据库管理系统。DBD还可以把一种格式的数据和数据字典拷贝成另一种格式,例如,你可以将一个dBASE的表拷贝到远程的SQL服务器上的一个数据库中去。有关DBD详细描述,请参看“数据库操作台(DBD)的使用”。
13.4 Delphi数据库应用程序的开发方法和步骤
13.4.1 概述
用Derphi用开数据库应用程序,虽然与开发其他应用程序有相似之处,但是也有一些重要的区别,我们必须要加以注意。
利用Delphi的客户/服务器功能, 程序设计者可以在本地数据库上或远程数据库服务器上开发客户/服务器模式的应用程序。Delphi 的一个强有力的功能之一是可以将基于本地桌面数据库系统的应用程序很容易地修改成客户/服务器模式的应用。一个Delphi 数据库应用程序访问的是本地数据库还是远程SQL数据库服务器上的数据库, 这对于最终用户是完全透明的。即数据库的物理位置对最终用户是透明的,当数据库的物理位置发生变化时,用户界面不必随之变化。
因为数据库应用程序的是依赖于它所访问的数据库的,所以在开发数据库应用程序之前必须要建立一个完善的数据库即数据定义,数据定义应当是开发数据库应用程序的一部分,但它超出了书本的范围,有关数据定义的内容,请参看关系数据库设计方面的资料。在我们用Derphi开发一个数据库应用程序时,可能有下列四种情况。
1、数据库不存在或者必须要重新定义。使用DBD为本地数据库定义Paradox或dBASE 数据库表。使用Delphi提供的服务器开发工具如Windows ISQL或DBD定义本地或远程SQL数据库务器上的数据库。
2、数据库在桌面数据库系统中或局域网上(如Paradox或dBASE),而且BDE、数据 库和应用程序在同一台机器上,这是典型的独立应用。
3、数据库在桌面数据库系统中,但是用户要把它改变到SQL数据库服务器中去,这 种情况我们在附录C中详细讨论。
4、数据库在SQL数据库服务器中,而且应用程序将到SQL数据库服务器中去访问数据 库,这是一个标准的客户/服务器应用。
有关开发客户/服务器应用程序的详细内容,参看“客户/服务器应用”一章。
13.4.2 数据库应用程序的开发步骤
数据库应用程序的最终目标就是为用户提供一个满足其长期需要的软件产品,因此,成功地开发一个数据库应用程序的关键之一是要详细地定义用户的需求,然后再围绕用户的需求进行开发,数据库应用程序的一般开发的三个基本步骤如下。
系统设计
系统实现
系统运行和维护
在这个三个基本步骤中,都包含着数据库的开发和应用程序界面的开发两大类任务,对于一个客户/服务器模式的应用,数据库和应用界面的区别就更明显一些, 因为它们运行在不同的平台之上,而且使用的操作系统都常常不一样,如(一个Unix环境的服务器和Windows环境的客户机)。
1、系统设计
系统设计阶段应当根据用户的需求,明确地描述数据库(数据库服务器端)和应用界面(客户机端)实现的功能,即决定哪些功能由服务器端实现,哪些功能由客户机端实现,对于客户/服务器应用程序,许多功能既可以在服务器端实现又可以在客户端实现的, 例如一个复杂的数学变换功能既可以由客户端的应用程序实现,也可以由服务器端的存贮过程实现。服务器和客户端应用程序功能的划分往往取决于应用程序运行的硬件环境,例如:如果客户端是低档的PC机,服务器端是高档的工作站,那么大量的计算由服务器完成是比较理想的。
2、系统实现
系统实现阶段的主要任务是使用Delphi提供的工具和部件以及Pascal语言实现系统设计阶段的设想,并进行调试。
在系统实现阶段,最好使用数据库的一个备份数据库,这个备份的数据库与原数据库具有相同的结构,但其中的数据库只是原数据库中的一部分,至所以不在原数据库上开发应用程序,是因为考虑到没有调试好的应用程序可能会破坏数据库中的数据或者妨碍数据库的正常操作。
如果应用程序是基于远程SQL数据库服务器的,在系统实现阶段可以采用两种方法:
在本地InterBase服务器上,使用数据库的备份数据库进行开发和调试
在远程服务器上,使用数据库的备份数据库进行开发和调试
第一种方法优越性在于,它是独立于服务器的,而不至于影响服务器的其它的操作,而且不消耗服务器的资源不增加网络的负担。它的不利的方面是开发出来的应用程序只能在标准的SQL服务器上使用和调试。 第二种方法能够使程序设计人员直接感受到服务器的特性,但它在调试阶段要消耗网络和服务器的资源,这种方法具有一定的危险性,程序中的错误可能会导致服务器的瘫痪。
3、系统运行和维护
一个应用系统性能的优劣,效率的高低始终应当由用户来做出判决,应用程序在运行过程中,用户会提出一些新的需求和建议,根据用户需求的变化,应当对应用程序做一定的修改,使其进一步地得到完善和提高。
13.4.3 交付数据库应用程序
交付数据库应用程序意味着将它交付给最终用户,并且提供应用程序运行所需的软件,非数据库应用程序往往只需要一个EXE文件,而数据库应用程序要包括下列几类文件:
数据库应用程序生成的EXE文件和DLL文件(如果有的话)
必要的辅助文件(如Readme文件或HLP联机帮助文件)
支持访问数据库的BDE,有时也称为IDAPI
用于打印输出报表的ReportSmith报表工具
如果应用中使用了VBX控件,还要包括VBX和BIVBXII.DLL
13.3.4 安装BDE
在交付数据库应用程序时,必须同时在运行应用程序的机器上安装BDE,Delphi 本身包含可再安装的BDE,在准备数据库应用程序安装盘时,同时从Delphi中复制一份BDE 到最终用户的机器中,BDE中包含访问多种数据库系统的驱动程序,为了节省磁盘空间, 在安装BDE时,可以只安装应用程序必须的驱动程序,例如, 如果我们的应用程序只需要访问dBASE数据库文件,那么在安装BDE时,只需安装dBASE的驱动程序就行了。要访问Paradox数据库,BDE至少需要500KB的磁盘空间。BDE主要包括下列文件,请参看DEPLOY.TXT文件。
表13.5 BDE中主要包括的文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
文 件 名 说 明
──────────────────────────────────
IDAPI01.DLL BDE应用程序接口动态连接库
IDBAT01.DLL BDE Batch应用动态连接库
IDQRY01.DLL BDE查询动态连接库
IDASCI01.DLL BDE ASCII码驱动程序
IDPDX01.DLL BDE Paradox数据库驱动程序
IDDBAS01.DLL BDE dBASE数据库驱动程序
IDR10009.DLL BDE 资源库
ILD01.DLL 语言驱动程序
IDODBC01.DLL BDE的ODBC驱动程序
ODBC.NEW Microsoft ODBC驱动程序管理器(Version2.0)
ODBCINST.NEW Microsoft ODBC驱动程序安装程序(Version2.0)
TUTILITY.DLL BDE应用工具库
BDECFG.EXE BDE配置工具
BDECFG.HLP BDE配置工具帮助文件
IDAPI.CFG BDE(IDAPI)配置文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
安装BDE可以采用与安装Delphi相同的方法,在Windows环境中运行Delphi的安装程序setup.EXE,此时,Delphi显示Delphi Installation对话框
为我们只须安装BDE,所以只要选择Borland Database Engine检查框,如果应用程序要处理SQL数据库服务器上的数据,还必须要选择SQL Links 检查框, 以便安装 SQL Links。单击Continue按纽,完成BDE的安装。
如果没有Delphi安装盘,我们也可以手工安装BDE , 从现有机器上的 BDE 目录(或IDAPI目录)中拷贝所有的文件到用户机器上的BDE目录中,并在用户的Win.INI 文件的结尾处增加下列语句:
[IDAPI]
DLLPATH=C:/DELPHI/IDAPI
CONFIGFILE01=C:\DELPHI\IDAPI.CFG
然后在Windows的Program Manager中为IDAPICFG.EXE起动图标。
语言驱动程序的安装
BDE可以为应用程序提供不同的语言支持,语言驱动程序可以在配置Paradox,dBASE数据库时装入,对于服务器上的数据库可以在IDAPI.CFG 文件中说明相应的语言驱动程序,语言驱动程序在C:\DELPHI\IDAPI\LANGDRV子目录下(驱动器名与Delphi安装的磁盘有关),是带有扩展名为.LD的文件。如果正确安装了语言驱动程序,在Windows的WIN.INI 文件中包含下列内容(缺省情况下):
[Borland Language Drivers]
LDpath=C:/dELPHI\IDAPI\LANGDRV
13.4.5 安装SQL Link
安装SQL链接与安装BDE执行相同的步骤,在图13.7中只选择SQL Link检查框,然后执行安装,选择应用程序要访问的SQL数据库服务器,当选择安装SQL Link时, 安装程序会自动地安装BDE。根据用户选择的SQL数据库服务器,安装程序会自动地提示相关的特定信息,例如Informix数据库系统的链路(SQL Link)需要一个放置消息文件的地方。用户选择的每个SQL Link都使用一个或多个附加的动态链接库(DLL文件),这些文件将要拷贝到BDE目录中,下面是建立SQL Link时常见的SQL数据库系统所需的DLL文件。
1.ORACLE数据库
在建立ORACLE的SQL Link时除了需要下列文件外,应用程序还需要ORACLE数据库管理系统的客户端的连接产品与网络协议接口。
表13.6 建立ORACLE数据库的SQL Link所需的文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
文件名 描 述
───────────────────────────
SQLD_ORA.DLL Borland SQL Link for ORACLE驱动程序
SQLD_ORA.HLP 联机帮助文件
SQL_ORA.CNF ORACLE驱动的BDE配置文件
ORA6Win.DLL ORACLE 6.x版客户端的DLL文件
ORA7Win.DLL ORACLE 7.x版客户端的DLL文件
SQL13Win.DLL ORACLE 客户端的DLL文件
SQLWin.DLL ORACLE 客户端的DLL文件
COREWin.DLL ORACLE 客户端的DLL文件
ORAWE850.Ld ORACLE 的语言驱动程序
━━━━━━━━━━━━━━━━━━━━━━━━━━━
2. Sybase和MicroSoft SQL Server数据库
在建立Sybase或MicroSorft SQL Server的SQL Link时除了需要下列文件外, 应用程序还需要Sybase数据库管理系统的客户端的连接产品与网络协议接口。
表13.7 建立Sybase数据库的SQL Link所需的文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
文件名 描 述
───────────────────────────
SQLD_SS.DLL BDE SQL Link for Sybase的驱动程序
SQLD_SS.HLP 联机帮助文件
SQL_SS.CNF Sybase驱动程序的BDE配置文件
W3DBLIB.DLL Sybase/MC SQL Server客户端的DLL文件
DBNMP3.DLL Sybase/MC SQL Server客户端的DLL文件
SYDC437.LD Sybase语言驱动程序
SYDC850.LD Sybase语言驱动程序
━━━━━━━━━━━━━━━━━━━━━━━━━━━
3. Informix数据库
在建立Informix的SQL Link时除了需要下列文件外,应用程序还需要Informix数据库管理系统的客户端的连接产品与网络协议接口。
表13.8 建立Informix 数据库的SQL Link所需的文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
文件名 描 述
───────────────────────────
SQLD_ss.DLL BDE SQL Link for Informix的驱动程序
SQLD_INF.HLP 联机帮助文件
SQL_INF.CNF Informix驱动程序的BDE配置文件
LDLLSQLW.DLL Informix客户端的DLL文件
ISAM.IEM Informix错误信息文件
OS.IEM Informix错误信息文件
RDS.IEM Informix错误信息文件
SECURITY.IEM Informix错误信息文件
SQL.IEM Informix错误信息文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
4.InterBase 数据库
在建立InterBase的SQL Link时除了需要下列文件外,应用程序还需要InterBase数据库管理系统的客户端的连接产品与网络协议接口。
表13.9 建立InterBase数据库的SQL Link所需的文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━
文件名 描 述
───────────────────────────
SQLD_IB.DLL BDE SQL Link for InterBase的驱动程序
SQLD_IB.HLP 联机帮助文件
SQL_IB.CNF InterBase驱动程序的BDE配置文件
CONNECT.EXE InterBase连接测试诊断工具
CONNECT.HLP InterBase连接测试诊断工具的帮助文件
GDS.DLL InterBase API DLL
REMOTE.DLL InterBase与网络的接口的DLL文件
INTERBASE.MSG InterBase错误信息文件
━━━━━━━━━━━━━━━━━━━━━━━━━━━