DELPHI基础教程

第十八章 Delphi客户服务器应用开发(二)

18.1.4.1 本地型数据库接口 

 本地型数据库是伴随微机的产生而产生的。 dBASEII 作为最早的并仍在使用的系统之一就是典型的本地型数据库。 

  本地型数据库管理系统的数据存放在一个本地硬盘上。 DBMS 接受来自用户或用户程序的命令。这些命令通常是系统特有的数据库管理语言。命令被转换为简单的磁盘访问命令,并交付文件系统来处理。然后 DBMS 接收来自磁盘上的数据,并加以处理。

 在本地型 DBMS 应用中,数据库引擎 (DBE) 运行于工作站上。图 18.2 暗示数据是存放在工作站的局部驱动器上,其实在网络中,数据还可存放在文件服务器上。这里数据库引擎使用典型的文件 I/O 调用和记录封锁技术来直接读写数据。 

 存放数据的文件位于网络中的某个服务器上时, DBMS 的行力与单机情况无异。 网络操作系统负责对服务器的管理,因此对 DBMS 而言,对服务器的使用就象使用局部的驱动器一样。

 当用户发出命令,请求 DBMS 读取数据库中的数据时,该请求首先由工作站 ( 客户 ) 的网络驱动程序处理,它负责把请求从网络上传到所需的服务器网络文件系统。服务器操作系统从适当的磁盘卷上找到数据,并发回等待中的工作站驱动程序。最后,数据回传给 DBMS ,这样 DBMS 使用这些数据就象使用本地存储的数据一样。网络情况下的接口比单机情况下接口的处理增加了通信开销,正常情况下这种额外开销不会影响用户的响应时间,除非在网络通信的高峰期间或 DBMS 要求大数据量传递。

 对于本地型 DBMS 其大部分工作都在工作站一侧完成,即使数据存储在文件服务器上,其对数据的处理仍然要在工作站上进行。这种方式的最主要的一个缺点是无论查询需要多么少的数据,都需要首先将查询中的所有数据通过网络传到工作站,然后由工作站负责选出满足查询条件的数据,不难想象,当几个用户同时操作数据库时,数据库网络的带宽会很快阻塞。

  在这一方式下,工作站不仅要负责所有用户界面管理,还要负责所有数据处理的工作。在当今的数据库应用中,尤其是那些功能强且使用简便的系统,用户界面的处理开销是相当大的,象 Windows 这样的图形环境,处理上的额处开销会更大。为此而升级工作站是很得不偿失的。

18.1.4.2 客户 服务器型数据接口

 

  由于服务器硬件技术逐年迅速地提高,数据库在处理模式上在近五年内发生了改变。本地型 DBMS 逐渐让位给客户 / 服务器型 DBMS ,尤其是在大中型企业中更是这样。

 正如名字所暗示的,客户 服务器是将处理工作分散到工作站和服务器上去处理,服务器不仅负责存取数据,还要对数据作一定的处理工作,这样在数据发送给工作站之前即求得查询结果集,从而在大部分情况下可大大减少网络传输的开销,因此,也减轻了工作处理负担,从而只需关心用户界面的处理工作即可。

  服务器处理数据带来的另一个好处是,当服务器中数据库引擎使用了缓冲机制时,多个工作站可以从中受益。例如,一用户查询了某数据,当另一用户要查询同样的数据时,即可从服务器缓冲中直接得到结果,从而免去很多开销。

  客户 / 服务器系统的成功与否在很大程度上依赖于服务器硬件质量和容量。用户越多,服务器的处理负担越重,相应服务器硬件性能也要跟得上,否则就会导致响应时间比本地型数据库还要差的结果。  

 处理工作,而工作站负责用户界面处理工作 

 客户和服务器间的数据库接口要比本地型系统复杂得多。它有几个转换级负责命令和结果集在工作站和服务器间的传送。图 18.5 给出了客户 / 服务器数据库接口的详细情况。 

 客户 / 服务器的前端应用程序实际上不直接与数据库引擎打交道。每个客户服务器提供一个数据库通信接口,该数据库通信接口运行于前端。这些接口也称为数据库通信 API 等。数据库通信接口的工作流程如下:

 ① 前端应用程序发送命令给数据库通信接口。

② 接口通过网络把命令传给数据库引擎。

③ 数据库引擎在服务时上做查询或更新操作之类的工作,通过网络文件系统访问物理数据。

  ④ 数据库引擎将结果返送给工作站上的通信接口。

 ⑤ 前端从接口上接到结果后,显示或按用户要求做其它处理。 

 客户 / 服务器型比本地型 DBMS 更接近 ODBC 的原理。因为由前端向数据库的命令发送和由数据库向前端结果的返回都是透明的,并不需知道具体传送方式如何,各系统存在差别地方是:客户 / 服务器系统在管理工作站和服务器间通信的方式不同,彼此会不兼容。此外 , 对于本地型 DBMS 缺乏读取不同类型数据源的能力的问题。这些问题在 IDAPI 中得到了有效解决。 

18.1.4.3 Borland Delphi 的解决方案 

   IDAPI 是通过 BDE(Borland Database Engine) 和 SQL Links ,来解决本地型数据库接口和客户 / 服务器型数据库接口的兼容问题的,见图 13.1 。

  Delphi 的数据库特性使你能很容易构造数据库应用程序。这些应用程序能访问 Visual dBASE 、 Paradox 、 Local InterBase Server for Windows 等本地数据库和 Oracle 、 Sybase 、 Informix 、 SQL Server 和 Remote InterBase Server 等客户 服务器数据库。

BDE 是 Borland 公司支持 Delphi 2.0 Client/Server Suite 、 Paradox for Windows 、 Visual dBASE for Windows 等产品的核心数据库引擎和互连软件。 BDE 提供了丰富和强壮的特性支持客户 / 服务器应用的开发。

 提供支持多种数据库如 dBASE 、 Paradox 、 Text 、 InterBase 、 Oracle 、 Sybase 和 Microsoft SQL Server 以及任何 ODBC 数据源的统一和一致的应用程序编程接口 (API) 。开发者能不用修改数据库应用就能访问不同的数据库站点和数据库格式:

● BDE 是用于开发客户 / 服务器数据库应用的理想工具,数据库应用程序既可访问本地数据库又可访问远程数据库

● 允许数据库用直接和灵活地访问数据源

● BDE 对于 Paradox 和 dBASE 文件格式来是高性能的数据库引擎

  ● 支持使用 ISAM(Indextd Sequential Access Method)SQL 和 QBE 访问数据

● BDE 是数据集成化引擎,提高跨不同数据库的共享服务。支持不同数据库格式的相互转化,如 dBASE 和 Oracle 表、从 InterBase 到 Paradox 拷贝数据甚至建立 InterBase 和 Oracle 表之间的一对多关系

  ● BDE 查询引擎为 SQL , QBE 和面向集合访问提供一致性的查询语言。支持用户定义和访问基本 SQL 的服务器和基于文件数据库的能力

● BDE 支持全 32 位功能,如多线程,抢占式多进程,长文件名和 UNC ,用户可在后台执行多个查询,多个数据库应用可访问同一个数据库文件

 

   BDE 的体系结构是基于数据库驱动程序的,它提供了各种共享服务:

 ● 缓冲区管理 (Buffer Manager)

 ● 排序引擎

 ● OS 服务

 ● 内存管理

 ● BLOB 快速存取

 ● SQL 查询引擎

 ● SQL 产生器

 ● 数据库重构

 ● 表的批处理

 ● 数据转换服务

 ● 连接服务

 ● 内存数据库服务

 ● SQL 驱动程序服务

 ● 系统管理

 ● 语言管理

 

   Paradox 、 dBASE 和文本数据库 BDE 包含的数据库驱动程序支持对标准数据源的一致性访问。用户可以增加 ODBC 驱动和 Borland SQL Links 产品以支持对 SQL 服务器的数据访问,如 InterBase Oracle 和 Sybase 等。此外 BDE 给予 Windows 95 和 Windows NT 应用开发者以直接、独立共享的对多种数据源的高级访问。

   BDE 在设计上是面向对象的。在运行时,数据库应用通过建立各种类型的 BDE 对象与 BDE 交互,这些运行的对象用于操作数据库实体如数据库表、查询。 BDE 的扩展的 API 支持 C 、 C++ 、 Delphi 等对数据库引擎的访问。

 在 Delphi 应用程序中访问数据库是通过调 BDE 的 API 函数。 Delphi 在库单元 BDE 中提供了大约三十多个 API 函数和各种 BDE 消息和结构。由于 Delphi 应用程序的开发是基于部件的,有关 BDE API 的调用都嵌入了 Delphi 可视部件类库,因此,建立数据库应用时可以不必管 BDE API 的细节。只要正确安装 IDAPI 的 Drivers ,并进行正确的配置,就能使你的数据库应用程序与服务器连接并访问数据库。当然为了提高应用程序的数据库访问性能, 可以在程序中直接调用 BDE API 函数。

  Borland 的 IDAPI 包含对 ODBC 的支持,因此通过 BDE ,你的应用程序能访问一切与 ODBC 兼容的数据库如 Access 和 Btrieve 。

   Local InterBase Server 提供了一个单用户多实例的 SQL 服务器平台,特别是在将数据库应用程序转移到对 Oracle 、 Sybase 和 Informix 等远程数据库的访问之前,可以在 Local InterBase Server 平台建立和测试数据库应用程序。

 对客户 / 服务器型的数据库应用程序来说, SQL Links 在 Delphi 数据库体系结构中起着至关重要的作用。

   Borland SQL Links 支持访问局部 (Paradox dBASE) 和远程 SQL 数据库的 BDE 应用程序。为了访问特定的远程 SQL 服务器必须在客户端安装相应的 SQL Links 驱动程序。安装了 SQL Links 驱动程序后, SQL 表达式才能被传送给相应的服务器执行。

 一旦你安装了 SQL Links 的驱动程序并建立 SQL 驱动程序的 Alias ,你就能采用下列方法使数据库应用程序象访问本地 Paradox 和 dBASE 数据库一样访问远程数据库:

  ● 通过应用程序用户接口 ( 界面 )

● 通过包含嵌入 SQL 表达式的应用程序

● 直接将 SQL 表达式传送给服务器

 

   BDE 也支持应用程序使用 SQL 访问局部数源,

 安装了 SQL Links 驱动程序,你能用 SQL 访问数据。驱动程序负责 SQL 服务器的链接,将查询语句转换成兼容的 SQL 语句并将它们传送给 SQL 数据库。等处理完成后, SQL 数据库把结果以应 

  ⑴ BDE 客户查询 SQL 数据库;

  ⑵ SQL Links 驱动程序建立客户工作站与 SQL Server 的链接,并将查询发送给 SQL

服务器;

  ⑶ SQL 服务器进行 SQL 表达式的错误和语法检查,处理查询并将结果返回给 BDE

客户;

  ⑷ SQL Links 驱动程序将结果通过 SQL 转换成客户端能识别的形式,客户端将其进

行格式化并将数据显示给用户。

 

  在应用程序中使用 SQL Links 驱动程序对使用 SQL 的数据库具有如下好处:

  ● 直接查询 SQL 服务器的能力

 ● 支持 SQL 网络的传输

 ● 增强了记录的快速存取

 ● 数据锁定

 ● 在 SQL 结果集和数据库表的双向变换

 ● 使用索引给数据排序

 ● 为数据库当前 Session 建立书签,并可在以后重用书签

 ● 通过动态访问数据源来动态处理 SQL 数据

18.2 Delphi 客户 服务器应用开发环境的构造

 

18.2.1 Borland SQL Links 的安装

SQL Links 的安装过程如下:

⑴ 在客户端工作站上将 SQL Links1 号磁盘插入软盘驱动器 .A: 或 B 。

⑵ 在 Windows 95 的资源管理器中,选择运行 A:\INSTALL( 或 B:\INSTALL) ,并显示打开对话框。

  ⑶ 选择 Continue 或按 Enter 。 INSTALL 检测工作站上是否已安装了 BDE 的动态链接库 IDAPI01.DLL 。如果需要它将显示一个对话框,以让你描述该文件所在位置。当定位 IDAPI01.DLL 后, INSTALL 显示 Borland SQL Links 目录对话框,描述你想安装的 SQL Links 驱动程序。

 当你完成这些工作,选择 Continue 或按 Enter.INSTALL 显示 IDAPI 配置定位框。

  ⑷ 描述你想安装的 IDAPI 配置文件的升级版的位置。当你完成这些工作后,选择 Continue 或按 Enter 。在继续安装之前按照你所选择的驱动程序。安装程序将需要更多的信息,后面的章节中将叙述这些信息。

 ⑸ 一旦你提供了所有的必要信息,安装开始当安装结束后,你能选择察看 SQL Links 自述文件—— READLINK.TXT 。阅读这个文件将找到最新的信息。

18.2.2 配置 SQL 环境

 

  与你的 BDE 应用程序一起安装的有 BDE 配置工具 (BDECFG32.EXE) ,该工具帮助用户修改他们的应用程序配置。配置参数被存于命名为 IDAPI32.CFG 的二进制文件中。当应用程序启动时,将读这个文件。通常该文件在应用安装过程中被置于 BDE 文件目录中 (C:\Program Files\Common\BDE) 。

 本节描述怎样使用 BDE 配置工具设置应用程序的 SQL 环境。一旦配置好 BDE 应用环境,就可开始联接网络,并访问 SQL 服务器。

 关于怎样使用 BDE 配置工具的详细介绍,可参见 BDE 用户指南或按运行 BDE 配置工具选择 Help 按钮显示在线帮助。

  在开始配置 SQL 环境前,必须已完成以下工作:

  ● 已安装 SQL Links 软件

● 退出所有其它 Borland 应用程序

● 在 Windows 95 中打开应用程序组 Borland Delphi 2.0

● 选择 IDAPI 配置工具图标,出现配置工作窗口后进入驱动程序管理页

 

18.2.2.1 配置 SQL Link 驱动程序缺省设置的方法

 

   SQL Link 驱动程序缺省设置是指在 BDE 配置工具的 Drivers 页中的参数设置,这些参数在建立新的 Alias 中使用。 Alias 是描述网络资源的一组参数的集合。 BDE 应用使用 Alias 联接共享数据库。 Alias 对于访问局部数据库并不是必要的,但要访问 SQL 数据库,却是必不可少。

  SQL Links 驱动程序的缺省设置,是你建立新的 Alias 的原型。尽管你在建立 Alias 后能定制它,但在建立新的 Alias 前设置相应的缺省设置要来的容易。因为这样建立的每一个 Alias 将继承这些设置。

 要描述驱动程序的缺省设置,要完成以下几项:

● 将亮条移到驱动程序的入口,驱动程序管理程序显示所有的该驱动程序的配置参数,在参数列表表端可用滚行杠检察各配置参数

  ● 如果需要编辑驱动程序的缺省配置参数,如果光标停在这格, 配置工作将自动套用缺省参数

 ● 当完成这些工作,选择 File|Save ,修改将在应用程序下一次启动时生效

18.2.2.2 SQL Links 驱动程序的缺省设置项目的含义

 

  1. VERSION

SQL Links 驱动程序的版本号。

2. TYPE

描述当前驱动程序类型。 SERVER 就表示该驱动程序用于连接一个 SQL 服务器, FILE 就表示驱动程序用于连接一个标准的基于文件服务器。

3. DLL 选项

所选 SQL Links 的 16 位驱动程序的动态链接库名。

4. DLL32

所选 SQL Links 的 32 位驱动程序的动态链接库名。

5. DRIVER FIAGS

内部的产品描述标志。

6. TRACE MODE

描述记录跟踪信息的类型

7. SERVER NAME

指定目标 SQL 服务器名。如果指定为 InterBase 服务器,将包含数据库文件的全部路径, Servername:/Usr/gds/directoryname/databasenam.gdb

  8. USER NAME

访问 SQL 服务器的缺省用户名。

  9. OPENMODE

OPENMODE 是 SQL Links 打开 SQL 数据库时的读写模式。取值可以是 READ/WRITE 或 READ ONLY ,缺省值是 READ/WRITE 。把 OPEN MODE 设为 READ ONLY ,将影响用户端的操作,但对 SQL 服务器没有影响。

10. SCHEMA CACHE SIZE

描述被贮存视图信息的 SQL 表个数。取值范围是 0-32 , 缺省值为 8 。

  11. LANGDRIVER

用来操作来自 SQL 服务器的数据的语言驱动程序。当光标停止 LANGDRIVER 域时,一个滚行框出现在正文域的左侧,用滚行杠可以用于你的驱动程序的可选的语言列表。如使用美国英语,该缺省值是空格。

 当描述的语言驱动程序与一个服务器别名相适应,那么你的应用程序将使用该驱动程序处理从服务器发来的数据。这包括你察看的所有表和所有查询返回的结果表。运行在不同系统上的服务器利用字符集的转换来决定怎样对数据编码。如果你操作在非英语环境,你的 BDE 应用程序可以使用不同于 SQL 服务器的字符集。如果你的平台上的字符集同 SQL 服务器上的不匹配,那么在两种不同平台间传递数据将引起下列问题:

● 数据在你的平台上不正确的显示

  ● SQL 数据库上将记录错误的字符

 

  为防止这种情况的出现, SQL Links 提供语言驱动程序,实现你的应用程序的字符集与 SQL 数据库的字符集的数据转换。这将使从 SQL 服务器传来的数据在你的平台上正确显示,或将你输入的数据可靠地传送到服务器上。

 语言驱动程序包含有关排序和大小写转换的信息。无论何时,对 SQL 数据库的查询按本地数据库的规则处理应用程序的语言驱动程序用于评测排序的字符范围。 如果平台上的排序和大小写转换与 SQL 服务器上的不同,你的应用程序就会显示不一致的结果。

 如果 SQL 数据库使用扩展字符集,请确信用于访问 SQL 服务的别名中描述正确的, SQL Links 语言版本选择的驱动程序的字符集应当与 SQL 服务器的相同。如果你没有找到合适的 SQL Links 语言驱动,你可修改别名中的 SQLQRYMODE 入口,防止按局部数据库规则处理查询。

12. SQLPASSTHRU MODE

描述应用程序访问 SQL 服务器时是否借助平台命令和传递式 SQL 。取值范围和它们的含义列于下表:

  表 18.3 SQLPASSTHRU MODE 设置

  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

设置            含 义

──────────────────────────────────────

NOT SHARED   传递 SQL 和非传递性 SQL 不共享相同的连接

SHARED AUTOCOMMIT 缺省值。传递 SQL 和非传递 SQL 将共享相同连接,传

递式 SQL 将以与非传递 SQL 相似的方式动作。 也就说

用户的传递式 SQL 表达式将被自动提交。

  SHARED NOAUTOCOMMIT 传递式 SQL 和非传递式 SQL 将共享同一个连接,但 SQL

驱动程序并不自动提交 SQL 表达式。在这种模式下,传

递行为是服务器独立的。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

SHARED AUTOCOMMIT 和 SHARED NOAUTOCOMMIT 模式并不支持所有的传递式表达式。当 SHARED AUTOCOMMIT 或 SHARED NOAUTOCOMMIT 模式被设置,在传递式 SQL 中不需执行事务控制语言。使用你的 BDE 应用编程语言来开始,提交回送事务。当传递式 SQL 和非传递式 SQL 共享一个连接,记录快存并不立即反映传递 SQL 操作的更新。

13. SQLQRYMODE

描述处理查询 SQL 数据的方法。取值范围含义列于下表,缺省值 NULL :

表 18.4 SQLQRYMODE 设置

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 设置      模 式      含 义

──────────────────────────────────────

  NULL     Server-Local 在 Server-local 中 , 查询模式查询首先传递给 SQL 服

务器,如果服务器不能执行查询,查询就在本地执

行。

  SERVER Server-Only 在 Server-Only 查询模式,查询被发送给 SQL 服务

                 器。如果服务器不能执行查询,不执行本地查询。

   LOCAL Local-Only 在 local-only 模式,查询总是本地执行。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

正常情况下,查询 SQL 数据库将在数据库服务器端被处理。然而,在某些情况下,完全在 SQL 服务器端执行的查询的结果不同于在本地执行的查询的结果。例如,你的 BDE 应用程序查询函数执行在字符域的大小写敏感搜索。如果,服务器不支持大小写敏感搜索,那么 Select 语句的条件如“ >A ”在不同地方查询将产生不同的结果。 如果你想确信所有来自 BDE 应用的查询都按照 SQL 服务器上的规则来执行,那么你就应合理配置 SQL Links 驱动程序,阻止查询的本地处理。使用 BDE 配置工具修改 SQL 数据库别名,将 SQL QRYMODE 设置成 SERVER 就可做到这一点。新的 SQLQRYMODE 值将在应用程序下一次启动时生效。

14. SCHEMA CACHE TIME  

描述表信息将被贮存多长时间,取值范围和它们的含义列于下表,缺省值为 -1 。

表 18.2 SCHEMA CACHE TIME 设置表

━━━━━━━━━━━━━━━━━━━━━━━━━

设置 含 义

─────────────────────────

-1 表被贮存至你关闭数据库

  0         不贮存表

1 … 2147483647   贮存表的时间数 ( 秒为单位 )

━━━━━━━━━━━━━━━━━━━━━━━━━

 

  设置该值能提高数据库表的访问性能。

15. MAX ROWS

描述 SQL Links 驱动程序能给服务器传递的 SQL 语句的最大行数。如果值为 -1 ,则没有限制。

16. BATCH COUNT

描述在自动提交前包含在 BATCH 中的修改记录个数。

18.2.2.3 建立和管理 SQL 别名

 

  设置标准别名的过程包括给 Alias 参数赋值,描述包含 Paradox 或 dBASE 文件的路径名和目录名。设置用于 SQL 数据库的别名包括给 alias 赋名,定制用于 SQL 服务器和数据库的访问参数。 SQL 别名包括目标 SQL 服务器的用户名和口令。这些参数对于访问任何 SQL 数据都是必须的。常用的 SQL 别名是当安装时,第一次修改缺省的 SQL Link 驱动程序的参数时自动建立。

  关于如何使用配置工具增加、修改和删除别名,请参阅附录。

 

18.2.2.4 联接 SQL 服务器

 

  当应用程序第一次访问 SQL 数据库,会触发一个自动联接过程。联接过程需要确认访问数据库的权限。

  如果配置文件和 SQL Link 驱动正确配置,应能用应用程序的 File 菜单通过相应的数据库别名在你的 SQL 数据库中选取一张表。下面介绍如何解决联接 InterBase 服务器过程中出现现的一般问题,并讨论有关使用 Borland SQL Links 的各种主题。

1. InterBase 服务器需求

下表所列软件应当已经安装在运行 InterBase 的服务器

表 18.5 InterBase 服务器软件要求

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 项 目       描 述

  ────────────────────────────────────

 数据库服务器软件   InterBaseV4.0 或更高版本

  网络协议软件     与数据库服务器和客户工作端网络协议兼容的网络协议

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2. 客户工作站需求

  下表所列软件应当已经安装和运行于客户工作站,表中还列出相关文件和参数。

 

表 18.6 客户工作站软件要求

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

  项目          描述

  ──────────────────────────────────────

  BDE 应用程序    被支持 BDE 应用程序,并已按产品文档要求安装

  硬件和操作系统    1.5MB 剩余磁盘空间,适合 Borland Delphi 需要的硬件和操作

            系统

  访问网络服务器的  如果你的 Borland Delphi 被安装在网络文件服务器上,请确

 权力        认对 BDE 文件安装目录有读写的权力

 网络协议软件    网络协议软件应当与服务器网络协议和客户工作端的客户数

            库通信驱动程序兼容。 InterBase 支持 Windows 95 WinSock API

   HOSTS 文件     HOSTS 文件包含你要连接的服务器的名称和地址:

例如: 128.127.50.12 MIS_Server

SERVIDES 文件   一个 SERVICES 文件包含访问 InterBase 服务器的协议。 在 SQL

Links 安装过程中,“ gds_db 3050/tcp ”被加入这个文件

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

 

erver)

[目录] [上一页] [下一页]