- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Delphi面向数据库的体系结构
第十三章Delphi的数据库体系结构
Delphi对数据应用程序的支持是其编程环境的主要特征之一。很多程序员要花费大量的时间来编写数据访问代码因为这些代码必须是数据库应用程序中最稳定的部分。本章将综述Delphi对数据库编程的广泛支持。
这里不再讨论数据库设计的理论,我们认为读者已经掌握了数据库的基础知识,并曾经从事过数据库的构建和设计的工作。我们也不会过深的设计数据库专有的问题;我们的目标是帮助读者了解Delphi对数据库访问的支持。
我们首先介绍Delphi为进行数据访问提供的各种方法,然后对Delphi中可以使用的数据库组件进行综述。本章将深入分析TClientDataSet组件的使用,介绍如何用它进行本地数据访问。而客户机服务器数据库访问在稍后的14章”使用deExpress的客户机服务器编程”中进行介绍;本章中还包括对TDataSet类的介绍,并深入分析TField组件以及数据敏感控件的使用。随后的章节将讨论更高级的数据库编程专题,如使用dbExpress库(以及InerBaseExpress组件)的客户机服务器编程。
访问数据库:dbExpress、本地数据及其他
在被迅速公认为一种数据库应用程序开发工具的Delphi的早期版本中,唯一可以用于数据库访问的技术是Borland Database Engine(BDE)。从Delphi3开始,与数据库访问有关的VCL部分经过改造库用于多种数据库访问的解决方案,其中包括有Microsoft的ActiveX数据对象ADO、本机InterBase组件、dbExpress库及BDE。许多第三方厂商目前已经提供了针对不同数据格式的数据库访问机制。包括以协商不能被Borland组件访问的数据格式,并且提供了与Delphi的VCL相集成的解决方案。
dbExpress库
Delphi近年来适时的提出体格新特征是Windows平台的Linux平台引入dbExpress库。这里我们使用库一次而不是使用数据库引擎是因为与其他的解决方案不同,dbExpresss使用了一种轻量级的方法,并且在用户机器上他基本上不需要进行配置。
轻量级与可一直实际上是dbExpress的两个主要特征,也是被Borland同Kylix项目的开发一同引入的原因。与其他库相比,dbExpress实际上在能力方面是有限的。他也只能访问SQL服务器,没有缓存能力并只能提供对数据的单项访问,并且只能通过SQL查询来工作,而不能生成相应的SQL更新语句。
乍看起来,读者可能认为这些局限使得这个库不会有太大用处。恰恰相反,这些特性是指更有意义。如果我们需要生成报表,包括显示数据库内容的HTML页的话,对单项数据集进行间接更新是一种规范。如果我们想建立一个用户界面来编辑数据,可以考虑Delphi包含的特定组件,他们提供了缓存以及对查询的解析。这些组件允许基于dbExpress的应用程序比使用独立数据库引擎的应用程序有更多的控制,独立的数据库引擎能够做更多额外的工作,但通常是采取他自己的方式而不是我们希望的方式。
DbExpress允许我们避开各种不同的SQL语法来编写应用程序,并且访问多个不同的数据库引擎而不需要太多的代码修改。受支持的SQL服务器包括Borland自己的InerBaseOralce数据库服务器,MySLQ数据库、Informix数据库、IBMDB2以及Delphi7的Microsoft SQL Server。第十四章将更加详细的描述dbExpress、相关的VCL组件,并给出更多的返利。而本章主要着眼于数据库体系结构基础。
Borland数据库引擎
Delphi中任然包含有BDE,它允许我们访问本地的数据库格式以及SQL服务器和任何能够通过ODBC驱动程序访问的东西。这是早期Delphi版本总的标准数据库技术,但是,现在Delphi认为这种技术已近过时了,尤其是对于使用BDC通过SQL Link驱动程序访问SQL服务器来说,更是如此。使用BDE访问本地表格任然收到官方支持,只仅仅是因为对于这种应用程序而言,Borland还没有提出一个简单的迁移方法。
在一些情况下,一个本地表格能够有ClientDataSet组件替代,特别是那些临时的或者小的查询表格。但是,这宗应用于大型表格是行不通的,因为MyBase需要向表格装入内存空间进行访问,那排是是为了得到一条记录。我们建议将大型表格转移到咱装在客户端计算机的SQL服务器之中。用于这种情况,InterBase是一个很好的解决办法。这种类型的迁移还能后提供对Linux平台的支持,因为,在这里BDE是不可以使用的。
当然,如果我们拥有了者在使用的BDE的应用程序,我们可以继续使用他们。Delphi的组件面板中的BDE
文档评论(0)