填写数据(filling some data)
为了有一些“哑元”(dummy)数据,在类型(type)表中填上以下4个记录:“游戏(game)”,“数据库(database)”,“互联网(internet)”,“图形(graphics)”。在选择存储在应用程序表(applications)中的应用程序类型时,这些值将被使用。 接下来,在作者表(authors)中增加一行:'delphi guide'、'delphi.guide@about.com'、 'http://delphi.about.com'。最后,在应用程序表(applications)中加上一行:'zoom'、'zooming the destop'、'delphi guide'、'graphics'、10、0、02/20/2001,同时让最后一个字段(照片)为空。
怎样处理这些“空”(blank)的数据库......在本教程的余下章节将进行说明。
第二章 连到数据库,用ado? bde?
第一节 delphi数据库连通性
像在上一章中所显示的那样,数据库是以一定的结构格式存储数据的一个或多个表的集合。这些表包含以行、列的形式表现的数据。当一个数据库包含一个或多个表时,这些表通常拥有分散但相关的数据。ms access、interbase、sql server用一个文件表示完整的数据库(ms access是*.mdb文件)。另一方面,paradox和dbase由代表索引和表关系的单独的表和文件定义。描述paradox数据库的所有文件通常存放在一个目录中。当然,delphi可以以这两种方式工作。
用delphi,我们可以连到不同类型的数据库:本地或c/s(远程服务器)数据库。本地数据库存放在本地驱动器或本区域网中。远程数据库服务器通常位于远端机器。本地数据库的类型有paradox、dbase和ms Access。C/s数据库有ms sql server、interbase或oracle。
本地数据库通常被称为单层数据库。单层数据库对任何变化如:编辑数据、插入记录、或删除记录-立即实现。单层数据库在表所容纳的数据量大小和应用程序所支持的用户量的多少上有限制。当数据库包含几个表之间复杂关系的信息时,或当客户端数量增加时,你需要使用二层或多层应用程序。客户端应用程序在本地机上运行;应有程序服务器多运行在服务器上,而数据库可能位于另一个服务器。多层体系的思路是客户端程序可以非常小,因为应用程序服务器可以完成很多工作。这可以使你编写所谓瘦客户端应用程序。
当我们用delphi编写数据库应用程序时,我们需要用一些数据库引擎访问数据库的数据。数据库因请允许你把焦点集中在你所访问的是什么数据,而不是怎样访问它。从第一版开始,delphi就为数据库开发人员提供了bde(borland database engine)。除了bde外,从第五版开始,delphi提供对微软的ado数据库接口的支持。
本教程将重点关注用ms access本地数据库开发单层数据库应用程序。
第二节 borland 数据库引擎(bde)
bde是所有borland产品—包括delphi和c++builder—时共同的数据访问层。bde是一个dll(dynamic link libraries)和工具的集合。它的漂亮之处在于所有的数据处理对于开发者都是透明的。bde带有一套驱动,可以使你的应用程序与多种不同类型的数据库进行交流。这些驱动把高层次数据库命令(如open或post)和任务(记录锁定或sql结构)转化为特殊的数据库类型所需要的特定命令,这些特殊的数据库有:paradox、dbase、ms access或任何odbc数据源。bde api (application programming interface 应用程序编程接口)包含200多个过程和函数,它们可以从bde单元获得。幸运的是,你几乎根本不需要直接调用这些程序。相反地,你通过vcl(译者加:visual component library可视组件库)的数据访问组件—位于组件面板的数据访问页(data access)使用bde。为了访问特殊的数据库,应用程序只需知道数据库的别名(alias)就可以访问该数据库的所有数据。别名在bde管理器(bde administrator)中建立,它指定了驱动器的参数和数据库的位置。bde自带一个数据库驱动集,可以访问大范围不同类型的数据元。标准的bde驱动包括paradox、dbase、ms access、ascii文本。当然,任何odbc驱动器也能通过odbc管理器(odbc administrator)被bde使用。
使用bde访问数据库的delphi应用程序需要为应用程序分发bde。当配置应用程序的bde时,你必须使用installshield express或别的borland指定的安装程序。
bde作为数据库引擎有其优点也有其缺点。但是,在本教程中将不讨论为什么和什么时候你应该(或不应该)使用bde方法而不是某些非bde技术。
既然本教程是讨论ado/msaccess的,那么余下部分将集中在这种非bde的数据库方法。
2002年12月22日