BDE(Borland Database Engine)是Inprise公司的数据库引擎,
它结合了SQL Links允许程序员通过它能够连接到各种不同的数据库。
BDE是BORLAND 数据库引擎的缩写,它是用来驱动数据库的,就像ODBC一样。
同样的DBASE表可以用BDE驱动,也可以用ODBC驱动。

简介

要开发数据库应用程序首先要解决数据源的问题,那么什么是数据源呢?
简单来讲数据源就是实实在在的数据,通常是各种数据表。
有了数据源我们就有了开发程序的依据,然而一般情况下应用程序并不能直接和数据源打交道,
必须通过某些中介,这些中介被称为数据库驱动器,通常每一种数据库都有至少一种数据库驱动器,
如:Access,Foxpro,dBase等数据库都有自己的数据库驱动器,有了这些数据库驱动器,为了编程的方便起见,接着就产生了管理这些数据库驱动器的引擎,
有了数据库引擎,程序员在编程时就不要为访问不同的数据库驱动来费脑筋了,
只要按照统一的方法访问数据库引擎,而让数据库引擎去完成不同数据库驱动器的转换,
数据库引擎就像一个公共接口,为访问数据库提供了统一的方法。
BDE是(Borland Database Engine)宝兰数据引擎的缩写,它不仅能访问本地的不同数据库,
还可以将应用从本地上传到客户机-服务器系统,而且有很高的效率。

能访问的数据分类:
一,本地数据。
二,客户机-服务器体系的异地数据。

工作原理

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数据引擎实现数据库连接
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中常用的数据库组件。
1. 数据访问组件(Data Access Component)
数据访问组件在Delphi组件面板的Data Access组件页上可以找到。这里我们应当注意:Table、Query和Storedproc三个控件,它们称为“数据集组件”,
用于和数据库连接。学习者可以将这些控件视为“虚拟”的数据库,对它们的操作就可以认为是对数据库的操作。 (1)DataSource控件是数据集组件和数据控制组件的连接媒介。数据控制组件是用户操作数据库中数据的界面,
只有通过DataSource控件才能和数据集组件连接,从而对数据进行显示、修改、维护等操作。 (2)Table控件是通过数据库引擎——BDE来存取数据库中的数据的。
通过BDE将用户对数据库的操作(如添加、删除、修改等)传递给数据库。
(3)Query控件是利用SQL(Structured Query Language,结构化查询语言)通过BDE来操作数据库的,
和Table控件完成的功能相似,它只是采用了SQL来实现。 (4)Storedproc控件是通过BDE对服务器数据库进行操作的,常用于客户/服务器(C/S)结构的数据库应用程序。 (5)DataBase控件一般用于建立远程的数据库服务器——客户/服务器结构的数据库应用程序和数据库之间的连接。 (6)Session控件是用于控制数据库应用程序和数据库连接的,主要用于复杂功能的实现,例如:多线程数据库程序设计。
2. 数据控制组件(Data Control Component)
数据控制组件也可以称为数据显示组件或数据浏览组件。它们的主要功能是与数据访问组件相配合,提供给用户一个对数据进行浏览、编辑等操作的界面。数据控制组件在组件板上的DataControl页上。它们主要有:DBGrid控件、DBNavigator控件、DBText控件、DBEdit控件、DBMemo控件、DBImage控件、DBListbox控件、DBComboBox控件、DBCheckBox控件、DBRadioGroup控件、DBLookupListBox控件、DBLookupComboBox控件、DBRichEdit控件、DBCtrlGrid控件、DBChart控件等。 此外,还有一些组件与数据库有关。例如,Decision Cube是一组主要用于数据统计工作的控件,以表格或图形等直观的方式表达统计结果。QReport是用来输出报表的控件,但是,根据经验来看,此控件不太适合中国人报表的习惯。此组件是Borland公司购买而来,性能不是太好,所以使用的不是很多。有一些第三方控件提供的报表控件很好用,也有一些国人自己制作的报表控件,很适合中国人的习惯。 还有一个组件页是ADO(ActiveX Data Objects),主要是使用微软的OLE DB功能对数据库服务器中的数据进行访问和操作。其主要优点是易于使用、高速度、低内存支付和存储空间占用较少。ADO支持用于建立基于客户端/服务器和基于Web的应用程序。ADO同时具有远程数据服务(RDS)功能,通过RDS可以在一次往返过程中实现将数据从服务器移动到客户端应用程序或Web页、在客户端对数据进行处理然后将更新结果返回服务器的操作。ADO逐渐流行起来,ADO本身也很复杂,微软有专门的帮助文件来说明如何使用ADO,学习者有兴趣可以找相关资料进一步学习。

软件优势

Delphi 中两种连接数据库的方法:BDE 数据引擎和ADO 技术。相比而言, BDE 数据引擎有以下四个优势: 1)其应用程序运行效率非常高。
2)目前BDE 是与Delphi 整合得最好的数据库访问引擎,它是通过提供安装相应驱动程序的方式来支持相应数据库访问能力, 因此Delphi数据库应用程序能访问多种类型的数据库, 而不是局限于一种数据库,从而Delphi对分布式数据库应用程序编写有很强的支持能力, 并且对于有些数据库, 只能使用BDE 引擎才能访问。
3)BDE 以提供组件的方式支持数据库编程, 编程非常直观、简单。
4)BDE 对数据库应用程序(特别是在网络环境下) 安装过程中的配置管理非常方便。

虽然BDE 有很多的优势, 但是Borland公司对BDE 已经进入了后期维护的阶段, 停止了对BDE 的更新开发。相反, ADO 就具有了广阔的发展前景, 虽然ADO 的执行效率可能有些不如BDE,但是ADO 不光具有BDE 的后三点优势,它还是通用的数据库访问技术, 并得到了广泛的支持, 使用范围广, 升级和维护比较方便。

备注:随笔中内容来源于网上资料整理,仅供参考。

BDE(一款数据库引擎,通过它可以连接不同数据库)的更多相关文章

  1. Excel VBA 连接各种数据库(二) VBA连接Oracle数据库

    本文主要内容: Oracle环境配置 ODBC驱动设置.第三方驱动下载 VBA连接Oracle连接方法 Oracle10g官方免账号下载地址 系统环境: Windows 7 64bit Excel 2 ...

  2. Excel VBA 连接各种数据库(一) VBA连接MySQL数据库

    本文参考[东围居士]的cnblog博文  Excel.VBA与MySQL交互  在自己机器上调试成功,把调试中遇到的问题一并写出了. 本文主要涉及: VBA中的MySQL环境配置 VBA连接MySQL ...

  3. 【redis数据库学习】用JAVA连接redis数据库各种报错

    最近项目中,需要用到redis数据库,然后使用Jedis让JAVA连接redis. 首先,安装redis数据库,参考的是:http://www.runoob.com/redis/redis-insta ...

  4. C++-数据库【1】-C++连接MSSQL数据库

    测试环境—— 系统:Win7 64bit 编译器:VC++ 2015 数据库:MSSQL 2008 R2 #include <Windows.h> #include <stdio.h ...

  5. PL/SQL developer 可以连接本地数据库,但是不可以连接远程数据库的解决方法

    修改Oracle_home目录下的 network\ADMIN\tnsnames.ora 文件, 在其中增加远程数据库对应的记录,类似下边这样: .2_orcl = (DESCRIPTION = (A ...

  6. 【数据库】Navicat Premium12远程连接MySQL数据库

    目录 00. 目录 01. 环境介绍 02. Navicat安装 03. MySQL开启远程登录权限 04. Navicat连接MySQL 00. 目录 @ 参考博客:https://blog.csd ...

  7. 吴裕雄--天生自然JAVA数据库编程:使用JDBC连接ORACLE数据库

    DROP TABLE person ; DROP SEQUENCE myseq ; CREATE SEQUENCE myseq ; CREATE TABLE person ( id INT PRIMA ...

  8. SQL Server 2012 连接到数据库引擎

    第 1 课:连接到数据库引擎 https://msdn.microsoft.com/zh-cn/library/ms345332(v=sql.110).aspx   本课将介绍主要的工具以及如何连接并 ...

  9. Err.number错误号和可捕获的 Microsoft access 数据库引擎和 DAO错误说明

    错误码        信息2420        数字语法错误2421        日期语法错误2422        字符串语法错误2423        ‘.’.‘!’.或 ‘()’的使用无效2 ...

  10. SQL Server 索引优化-----数据库引擎优化顾问

    本文将根据“数据库引擎优化顾问”(DTA)来发现无用或缺失的索引. 要使用“数据库引擎优化顾问”,首先需要对数据库负载进行监控,为数据库负载分析准备数据.从SSMS的工具中,打开SQL Server  ...

随机推荐

  1. 使用HEXO建站

    使用Hexo模板 按以下指导进行本地预览和上传到你的github. 环境安装 安装node.js node.js官方下载地址https://nodejs.org/en/ 设置npm淘宝镜像站(npm默 ...

  2. Recurrent Neural Network(3):LSTM Basics and 《Inside Out》

    下图是Naive RNN的Recurrent Unit示意图,可以看到,在每个时间点t,Recurrent Unit会输出一个隐藏状态ht,对ht加工提取后将产生t时刻的输出yt.而在下一个时间节点t ...

  3. Java IO(3)

    字符流相关 字符流基本上可以类比字节流 只不过是将字节流的byte 换为char. 最根本的两个类是Reader以及Writer Reader的子类有:BufferedReader, CharArra ...

  4. SQL常用语句之数据库中表的创建、删除以及属性的修改-篇幅3

    一.表的创建: CREATE TABLE [database_name.[schema_name].|schema_name.]table_name (column_name1 data_type   ...

  5. DS-哈希表浅析

    1.哈希表 2.哈希函数 3.哈希冲突 哈希表 哈希表是一种按key-value存储的数据结构,也称散列表. 之前的数组.树和图等等查找一个值时都要与结构中的值相比较,查找的效率取决于比较的次数. 而 ...

  6. shell 删除项目日志

    删除半年之前的日志 find 后面紧跟目录 .为当前目录 -type f 指定查找的是文件 -mtime +180  查找180天之前的 -name  文件名筛选 -exec -rm -rf  执行的 ...

  7. SAS去空格

    data test;       x="  aaa     bbb hahaha";       x1=compress(x);       x2=left(x);       p ...

  8. ping局域网主机得到外网IP或另一网段IP

    症状::两个笔记本连接到同一个路由器上, 一个ip是 192.168.1.100,主机名是Lenovo-A, 另一个是192.168.1.109,主机名是Lenovo-B 在Lenovo-A 上pin ...

  9. Day8---Python的字典类型及操作

    字典类 1.生成方法: a.介绍: 字典是键值对的集合,键值对 : 键是数据索引的扩展 b.生成方法: 使用{}  或者  dict()  a = {'a' = 1, 'b' = 2, 'c' = 3 ...

  10. bzoj1779 [Usaco2010 Hol]Cowwar 奶牛战争(网络流)

    1779: [Usaco2010 Hol]Cowwar 奶牛战争 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 302  Solved: 131[Sub ...