ODBC与BDE

*2004年左右写的资料,在这里留个底! 

ODBC与BDE是两种不同的数据库引擎!前者为MicroSoft集成到Windows中,后者为Borland公司随同其开发工具(Delphi,Cbuilder,Kylix)安装的。ODBC其意义为开放式数据链路(大致如此),BDE为Borland Database Engine的缩写,意为Borland数据库引擎。BDE相对ODBC而言没有任何优势,且已成为落日黄花,其已停止升级。而ODBC也并非就此一统天下,随着各种不同开发工具的出现,为了大家间可以通过一种标准协议而访问不同的数据库,先后出现了DAO,OLE
DB,ADO等.其前还有MicroSoft专为VB设计的MS JET,最新的为适应网络传送及更大范围内的兼容而开发出的XML(确切的讲它应当是一种标签代码).总之不同数据库引擎都是为了让应用程序以统一的形式访问数据库,而无论数据库的组织形式如何.

ADO的应用相对于其它DE而言是较为广泛的,其为MicroSoft开发的,存在于Windows系统中(较早系统需安装Ado Pack   Pack为Package缩写,即为补丁).Delphi自5.0开发支持ADO,ADO在效率上高于ODBC及BDE,且更为稳定,其主要基于OLE(Object Linked-Emmbed! 对象的链接与嵌入  在Word中插入Excel表并视同在Excel中编辑就是这一技术的典型应用.此后逐渐发展为DCOM及COM+的分布式应用).

 

ADO在Delphi的使用主要集中于几个ADO控件.在Delphi控件面板上有一ADO项,其下主要包括ADOConnection,ADODataSet,ADOQuery,ADOTable,ADOStoreProcedure,ADOCommand等控件,如果去除前面的ADO一词,同Data Access中的控件是相似的.其实Borland在引入ADO时就已考虑如何让使用DataBase,Query等BDE控件的程序员快速掌握ADO开发(而不是原始ADO,Delphi中的ADO是经过封装的ADO,当然在效率上是有一定的损耗的,相对易用性还是值得的).在几个控件中ADOCommand是效率最高的一个!

在ADO中主要是ADOConnection取代了DataBase的功能,而其中也包括了ODBC及OLDEB等..在窗体上放置一ADOConnection并双击之,在下图中:

点击Build.Show出如下窗体:

其中各项不必都要理解.如果使用SQL Server可以直接使用图中所选一项.

选定Server名,设定用户及密码,选择使用的数据库就可以完成设定了.

ADO也可以访问ODBC的.注意一点ADO与ODBC的基理并不相同,两者在底层实现是有天壤之别的.ADO对大数据流的支持是极佳的.

在数据库程序设计时,尽量减少同Server通讯时间,特别是取数据及写数据的时间,最好使用一批一批提交的方式,而非一笔一笔的提交.这一点可以使用Datase.Post,及ADOConnection.BeginTrans及ADOConnection.CommitTrans实现.在Query设定CachedUpdates属性设为True.

ADO的用性较Data Access中控件还有许多的特殊之处,但要完成的操作是相同,只是实现方式不同.如果单纯在程序员的角度上考虑就不需要了解系统如何完成的操作,只要理清我们要完成什么操作.

数据库操作主要是一.控制类的   建表建库,删表删库,修改表体中栏位信息(包括删除,修改及插入). 二.操作类的   取(写)记录,修改,删除及插入记录.查找,条件查询类(就是一般的语句加一个Where),简单的数据运算(汇总Sum,求均Avg等)没了,调用存储过程(就跟写一条查询语句一样,并且还要简单). 在前端就是这些了.余下就是将数据库好好包装一下,加入View,Trigger(触发器),StoreProcedure之类的控件.写一个存储过程的功能就要考量Cursor(游标)的应用.我们在编写数据库程序时常常会有一个效率的问题,如何让数据处理更为快速.(如何稳定是算法设计上的问题)在这一点上,很多人都忽略了数据库本身强大的数据处理功能,如果有一种应用程式可以将数据处理的功能做的很好,那它就可以是一种数据库服务器.无论SQL
Server还是Oracle都集成了强大的数据处理功能.甚至是各种API可供程序员自行编写低阶的代码,以提高服务器的应用.所以我们有理由相信数据库已经为我们设计了整套的解决方案,我们完全可以将更多的工作交给数据库完成.


我来介绍几个典型应用,A公司的人考以前处理考勤及薪资有时处理一天以上,可能都没有结果,而另一家B公司却可快速的处理,三千多人的薪资资料不到5分钟就可以完成,其中就是前者使用前端计算,一笔笔提交,后者采用存储过程计算.以三千人而言,前者的流程是取出资料,计算这个人本月资料,然后写入数据库.不计计算时间(计算时还要取数据),就要和数据库通讯至少至少3000*2次,而后者只是调用存储过程,加入一些参数,将由此组成的语句传给数据库就好,通讯次数一次.一般系统的限制点都在I/O上,而仅此就有6000倍的差距.
原因就在于对数据库的应用上.


在A写数据库程式时,总有一点,我们需要在提交时(Query的BeforePost事件中)对一些相关数据做处理.比如提交一个人的请假单时,我们要同时将统计人数加一.我们要一个人做离职处理时,也即删除这人记录时,需要同时删除这个人的其他相关资料(比如出勤,保险等).另一类可能较多出现,就是某人的工号或卡号更改了,如果表体组织的不好就要在多个表中做改号的工作.类似这样的操作我们都可以使用Trigger完成,从而省去了在前端先判断,再处理过程,首先省去了大量的可能也是重复的处理动作,也同时降低了I/O成本.


另一应用是有关开表的.表体的组织越符合范式越好.这一点我十分认同.一般我们做到二级范式2NR就可以了,可以省去不少麻烦,不至于时常在两表间处理,也兼顾了效率.上面所提人员改号一事都是这一点的正面例证.我们需要将表体组织的简洁高效,就要争取符合较高级的范式.但并没人限制我们表体数目,数据的存储只要不是冗余,就符合要求.同样假设存在这样一个需求(可能较少出现),我们在经常需要查询一些人数或汇总之类的统计资料,如何单开一表,并加入合适的Triger处理以保证数据的有效性,如此这般,我们便不用周而复始的做汇总统计.这只一方面,在许多情况数据库的有效组织将为程序的开发大开方便之门,并能有效提高系统的健壮性,稳定性及高效的要求,减少前端处理操作,真正实现瘦客户端的要求(Thin-Client).虽然计算的运算速度不断提高,但其要处理的数据也将越来越多.

所以,在软件公司中应设立数据库专职程序员,以致力数据库的优化.

 

另外我简要提一下开发文档.开发文档作为系统开发过程记录,是日后系统升级及技术支持的重要资料.所以一定做好开发记录,比如年月日,完成(修正)了什么功能,什么方式,代码所在单元.写代码时要尽量加入充足的注释,按CMMI2的要求不应少于1/4,其实这也没有必要,只要充足,可以表时下面代码的意义就可以了.

最后我再提一下PSP及TSP.软件开发作为一种产业,正渐变为一种流水线式的生产,大项目的导入,流程监管都有详细的规范.这其中最基本的就是PSP及TSP.PSP Personal Software Plan(也有另一种提法),它是指个人软件计划.是软体工程师自身提高的一环,它主要是一种表格,表明你的工作排程.如什么时候完成什么工作,分为几个步骤,各步骤实现目标及预计时间.当完成各步骤时填入实际完成时间.

TSP Team Software Plan.小组软件计划.  小组协作是一个项目成功的关键.一个开发小组涉及的人员都要有良好的协作精神.这一点如果体现在工作是就是多沟通,多交流.(在规模稍大一点的公司,这一含义就更为严苛了,或者说是一种制度).

以上都是一些概念性的东西.心里有底就好.

后面所提文档及TSP,PSP都是软件工程的一部分.软件工程是门重要的学问,非常有必要研究应用.

时间: 2024-10-29 03:37:13

ODBC与BDE的相关文章

XML实现异构数据库间转换的实现与分析(转)

xml|数据|数据库|转换 XML实现异构数据库间转换的实现与分析 类型: XML/Biztalk 收录时间: 2002-4-8 9:20:00 XML中一种扩展的标记语言,它具有很好的扩展性标记.本文通过XML实现不同数据库的定义,实现对XML数据库的访问和异构数据库之间的互访.   关键词:XML  异构数据库  信息交换  数据库访问  1  引言   XML(Extensible  Markup  Language)它是由W3C组织于1998年2月  制定的一种通用语言规范,是SGML 

用命令模式实现对象存储——对象与关系数据库

一.开发背景 面向对象方法在软件开发的分析.设计以及编码中作用越来越重要,它 在适应系统需求变化.提高软件可重用性和开发效率方面有着其它开发方法无法比拟的优点 .面向对象思想将应用域中的概念描述成对象,应用系统由一系列对象构成,对象之间可以 传递消息,系统的运作可说就是对象间的协同工作.有过开发经验人都知道,应用系统中有 些是对象是要持久存在的,需要将它们存入磁盘,以便在重启系统时能够调入系统.这些对 象在面向对象方法中主要指实体对象,为了一致,本文中以实体对象代表所有需要存储的对 象. 目前,

我的回忆和有趣的故事 by李维(台湾)

我的回忆和有趣的故事 by李维(台湾) --李维的回忆我的回忆和有趣的故事 by李维(台湾) 方圆 荐 前言(代序):我的小文<DELPHI探索>写作进度很难控制,其间隔的时间可能比较长, 为了在这段间隔的时间让大家看一些关于Borland,关于Delphi的一些幕后故事,故事可读性很强.我想,凡是喜欢Borland,喜欢Delphi的朋友都想了解Borlnad公司和它的Delphi究竟是怎么产生的. 下面文章由李维(台湾)先生撰写,我把原来的繁体字改成了简体字,希望让大家看得更舒服点. 文章

使用powerdesigner生成Pdm

使用powerdesigner first of all, you should configure your ODBC to connect your access.  Second, reverse database from ODBC by PowerDesigner.  From menu, select Database->Reverse Engineer Database, then select ODBC you configured just now.  Last, click

Delphi中BDE直连方式访问Oracle的问题

用Delphi开发基于ORACLE平台的数据库管理信息系统过程中,连接ORACLE后台一般考虑两种方式,一种是用ORACLE公司提供的驱动,用ODBC方式来连接:一种是绕过ODBC,用BDE直连方式. 在ORACLE客户端配置连接字符串后,并在BDE中创建一个ORACLE的别名,并把该别名的SERVER_NAME设成ORACLE的连接串,然后就可以通过这个别名来访问ORACLE了).本文主要说说后一种连接方式. 我用Delphi4C/S(安装了对应的补丁程序)在开发基于TURBOLINUX+OR

在DELPHI程序中动态设置ODBC数据源

在DELPHI数据库应用程序中,我们访问数据库通常有两种方法.一种是通过BDE数据库搜索引擎,即利用DELPHI自带的数据库驱动程序,这种方法的优点是速度快,但应用范围有限,当数据库版本更新时,有可能不能用于操作新的数据库:另一种方法是通过ODBC,这种方法的优点是可以随操作系统(如WINDOWS)提供,作为标准接口能适应多种数据库,缺点是速度慢.在编程时,我们可以根据需要选择其中的一种方法. 在利用ODBC访问数据库时,通常的方法时是在ODBC管理面板中设置一个ODBC系统数据源 (系统DSN

在DELPHI程序中使用ADO对象存取ODBC数据

作为一个ASP爱好者,笔者经常在ASP页面中使用ADO对象操作ODBC数据库,觉得用ASP创建WEB应用系统确定挺方便的.虽然在编程生涯中,笔者更喜欢Borland系列产品,对微软产品有点排斥,对ASP却是例外.某天,灵机一动,ADO对象是一个标准OLE对象,如果在DELPHI应用程序中能利用ADO操作数据库,应该挺不错.尤其在用DELPHI做网络数据库应用程序时,如果所在的WEB站点是WINNT站点并且支持ASP页面,就可以用ADO对象访问ODBC数据库,而不用把那么大的BDE再上载到站点上去

BDE数据库程序的精简安装

做安装程序时可以手工选择添加数据库的驱动文件,这样可大大减小安装程序的大小. 一.不可缺少的文件 Blw32.dll:语言驱动函数库. Idapi32.dll:BDE基本函数库. Fareast.btl.charset.cvb:远东语言驱动程序,对中文软件不可缺少. Idr20009.dll:错误信息库. bantam.dll:未知用途,但不可缺少 二.数据库驱动程序(根据需要选择一个或多个) Idasci32.dll:Ascii文本数据库驱动程序函数库,如果不用Ascii文本数据库,可以不要.

delphi 数据库技术沉浮录--谨给成为历史的BDE

        2014年9月,delphi xe7 出来了,这次在数据库技术方面,彻底抛掉了从1995 年 delphi 1.0 就自带的(Borland Database Engine)数据库访问技术.从而宣告了这个持续 了20余年delphi 访问数据库技术进入历史.    纵观delphi 数据库技术的20年发展史,其实也是delphi 的发展史.通过数据库技术的 变化,也可以了解delphi的发展历史及未来的方向. 一. 话说当初       Delphi 1.0 是16 位的编译器,