标题：BDE
BDE简介
BDE概念要开发数据库应用程序首先要解决数据源的问题，那么什么是数据源呢？简单来讲数据源就是实实在在的数据，通常是各种数据表。
有了数据源我们就有了开发程序的依据，然而一般情况下应用程序并不能直接和数据源打交道，必须通过某些中介，这些中介被称为数据库驱动器，通常每一种数据库都有至少一种数据库驱动器，如：Access,Foxpro,dBase等数据库都有自己的数据库驱动器,有了这些数据库驱动器，为了编程的方便起见，接着就产生了管理这些数据库驱动器的引擎，有了数据库引擎，程序员在编程时就不要为访问不同的数据库驱动来费脑筋了，只要按照统一的方法访问数据库引擎，而让数据库引擎去完成不同数据库驱动器的转换，数据库引擎就像一个公共接口，为访问数据库提供了统一的方法.
BDE是(Borland Database Engine)宝兰数据引擎的缩写,它不仅能访问本地的不同数据库，还可以将应用从本地上传到客户机-服务器系统,而且有很高的效率.
BDE能访问的数据分类一：本地数据。
二：客户机-服务器体系的异地数据.
BDE的工作原理
BDE 是Delphi数据库功能的枢纽部分,所有数据库存取使用的例程,均需要通过BDE 来处理,因此BDE是连接应用程序和数据库的桥梁。它是由几个DLL 模块组成的,各模块分别负责处理一些数据库的相关工作。如果机器上装有其它版本或重复的BDE ,那么BDE是按照下列的搜索顺序来载入BDE 的DLL 文件( Idapi32. dll) 并将BDE 初始化的：
1) 搜索当前目录(当前目录与应用程序的启动目录不一定不同)；如果没有找到该文件,将继续；
2) 搜索注册表HKEY-LOCAL - MACHINE \ SOFTWARE\ Borland \ Database Engine \ DLLPATH \ xxxxx中所对应的项目；如果没有找到该文件,将继续；
3) 按照装载库文件的先后顺序来进行搜索：即应用程序的当前启动目录→System目录→Windows 目录→PATH 环境参数中所设置的路径。
装载驱动程序DLL 文件的先后顺序,除了第一步的搜索路径要换为Idapi32.dll 这个文件被载入的目录之外,其它基本跟上面一样。而且BDE为一些DLL 文件预留了某些首选内存地址,如果相应的BDEDLL 文件不能被载入那些特定的首选内存地址时,系统将出错误信息并使初始化失败。
BDE是一个过程化的数据库访问接口，通过它可以建立数据库别名（DataBasealias）。使Delphi访问数据库别名中的各种数据表。
BDE在Delphi中扮演着重要角色。如果Delphi应用程序提出一个对数据库的请求，这个请求一定要通过BDE提交个数据库管理系统，数据库管理系统响应应用程序的请求，把查询结果通过BDE传送到Delphi应用程序。对于只在单机上使用的本地数据库而言，Delphi通过BDE来控制数据库中数据的读写。对于后台远端的数据库系统而言。BDE尚需通过SQLLINKS或ODBC（Open DataBase ConnectivityDrivers）才能读取数据库的内容。
与ADO的区别
ADO简介与BDE不同ADO是Microsoft推出的新一代数据访问规范，在Delphi6中它的地位等同于一个和BDE并列的数据引擎。
ADO实际上和ActiveX技术联系紧密，而ActiveX又和OLE,COM等技术有很密切的关系。
虽然ADO的功能比BDE比起来弱一些,但和BDE相比ADO有一些重要的优势，比如:
ADO将会内制在从Windows2000开始Microsoft新出的所有操作系统中,单就这一点就足以给其他的数据访问方式画上问号.
在Delphi7中提供了对ADO的全力支持，提供了很多ADO组件，还增加了一些新的字段类型如：WideString,GUID,Variant,interface,IDispatch等.
ADO是面向各种数据的层次很高的接口，它提供了强大的数据访问功能，可以访问的数据对象有：
1>关系数据库中的各种数据；
2>非关系型数据库，如层次型数据库，网状数据库等；
3>电子邮件与文件系统；
4>文本与图象，声音；
5>客户事务对象.
BDE与ADO连接方式的区别一、利用BDE数据引擎实现数据库连接 
BDE 连接数据库有如下几步：
1) 给数据库建立别名。BDE使用的核心是BDE别名的使用。别名相当于数据库的逻辑名称, 隐含了数据库存储物理地址和网络数据库的连接。要想让应用
程序通过别名和数据库建立连接, 首先要在BDEAdministrator 中给数据库建立别名。
2) 配置相关的参数。
说明： Host Name 是你自己的主机的名字, 我这里是lisan, Server Name 是SQL 服务器的名字, 我这里是Lisan\lisan, DataBaseName 是你在SQL 服务器下建立的数据库的名字, UserName 的名字是Sa, 相应会出现对话框输入密码。这是你以后连接数据库时用的用户名和密码。连接好数据库之后,那些属性的字体自动变成黑体了。数据库连接好之后, 以后的操作就不再连接,只需要输入正确用户名和密码即可成功的连接上。之后只需要对个别的情况与个别的表进行连接。
3) 选择数据访问组件。数据库组件主要有数据访问组件和数据控制组件。在数据模块窗体上添加数据访问组件TTable、TQuery、TDataSource 来实现访问数据库的功能,还要对各组件的属性进行设置。
4) 选择数据控制组件。在窗体上添加数据控制组件DBGrid、TDBEdit 等组件, 也要对属性进行设置。设置组件DBGrid、TDBEdit。该组件一般只需设置为DataSource 属性, 用于和组件DataSource 建立联系,从而设为 Data- Source1。很显然, 组件DataSource 是用于组件Table1 和DBGrid 之间建立联系, 即建立一个数据通道为了简化编程。通过上面的四步,就可以完成了数据库的连接。
二、运用ADO技术实现数据库的连接
Delphi 应用程序中可以使用原生ADO 对象和ADO Express 组件实现与SQL Server 2000 数据库的连接。在此以我的毕业课题“小型服装公司销售管理信息系统的设计与实现”为实例来介绍ADO Express 组件实现与SQL Server 2000 数据库的连接。Delphi中除连接类型外其他的ADO组件都有一个ConnectionString 属性。首先必须配置该属性才能连接到SQL Server 2000 服务器。连接到销售管理系统数据库的多个ADO 组件的ConnectionString 属性相同, 因此可以只配置一个ConnectionString 属性, 而通过配置其他ADO 组件的ConnectionString 属性来共享同一连接, 从而提高对SQL Server 2000 的访问效率。销售管理系统数据库存放于名为lisan\lian 的服务器上, 他的数据库名称为lv,登录用户为lisan, 登录密码为lisan。具体操作如下：
ADOConnection1.Connection
String：=’Provider=SQLOLEDB.1；
Password=lisan；
Persist SecurityInfo=True；
User ID=lisan；
Initial Catalog=lv；
Data Source=lisan\lian’
ADOConnection1 为ADO Connection 类(组件)的一个对象。其中Provider= SQLOLE DB.1 指明OLEDB 提供者, User ID=lisan 和Password=lisan指明登录SQLServer 的用户帐号和口令, PersistSecurity Info =True使该连接组件自动存储用户登录口令, Initial Catalog=lv 指明了销售管理系统数据库的名称(别名),DataSource=lisan\lian 指明了数据库所在服务器名称。
另外也可以通过连接向导来实现连接, 双击ADOConnection1 对象即见所示的连接向导。此连接向导可以通过两种方法来连接：
1) 选择UseData Link File, 通过Browse 按钮可
连接一个外部后缀为udl 的文件( 此文件可通过新建空文本文件而后更改后缀来实现,然后可以打开此文件来设置外部的连接属性) , 这样ADOConnection1.Connection String 的信息将保存于外部。这一种连接的缺点是udl 文件没有被加密, 如果采用保存密码的方式, 通过写字板即可看到里面的密码。
2) 选择UseConnection String, 单击Build 按钮弹出对话框。
在此输入ADOConnection1.Connection String 的信息就可对数据库连接。这时可以通过TADOQuery组件访问销售管理系统数据表, 设置TADOQuery 类对象ADOQuery1 的Connection 属性为ADOConnection1,然后通过设置其SQL 属性来指定操作, 例如要从数据库返回服装基本信息：
ADOQuery1.SQL：=‘SELECT*FROM 服装基本信息表’；
用户还可以为TADOQuery 类的SQL 属性指定其他SQL 描述, 从而实现过滤复杂的数据查询。
两种连接方式的各自优势和前景
Delphi 中两种连接数据库的方法：BDE 数据引擎和ADO 技术。相比而言, BDE 数据引擎有以下四个优势： 1）其应用程序运行效率非常高。2）目前BDE 是与Delphi 整合得最好的数据库访问引擎,它是通过提供安装相应驱动程序的方式来支持相应数据库访问能力, 因此Delphi数据库应用程序能访问多种类型的数据库, 而不是局限于一种数据库,从而Delphi对分布式数据库应用程序编写有很强的支持能力, 并且对于有些数据库, 只能使用BDE 引擎才能访问。3）BDE 以提供组件的方式支持数据库编程, 编程非常直观、简单。4）BDE 对数据库应用程序(特别是在网络环境下) 安装过程中的配置管理非常方便。
虽然BDE 有很多的优势, 但是Borland公司对BDE 已经进入了后期维护的阶段, 停止了对BDE 的更新开发。相反, ADO 就具有了广阔的发展前景, 虽然ADO 的执行效率可能有些不如BDE,但是ADO 不光具有BDE 的后三点优势,它还是通用的数据库访问技术, 并得到了广泛的支持, 使用范围广, 升级和维护比较方便。[1]