(1) 使用BDE
用Delphi写数据库程序的人免不了要同BDE打交道。BDE(Borland Dasebase Engine,Borland数据库引擎)是一个和ODBC类似的东西,Borland/Inprise本来企图用它来统一数据库接口。但后来Inprise在和微软的战争中败下阵来(ODBC是微软搞出来的),它又不肯放弃BDE,而是将其捆绑在 Delphi/C++ Builder系列开发工具中,结果好象变成这些开发工具的一种附属品了。
用BDE开发数据库程序相当容易。许多Delphi教科书在写到数据库开发这一章时,总是告诉你先在BDE中为某个DBF或Paradox数据库设置一个别名,然后往窗体上放一个TTable构件,然后将其DatabaseName指向相应的别名……然后,这个数据库中某个表的内容就在相应的Data-Aware构件中显示出来了。
ASCII(纯文本型的数据库)、dBase以及Delphi自己的Paradox,BDE可以直接访问。另外它也可以通过一些
相应的驱动,访问特定的数据库,例如通过DAO访问Access数据库。对于不能直接支持的数据库,BDE还可以连接到ODBC,通过ODBC进行访问,虽然这样效率比较低。这种性质决定了BDE是一个相当庞大的东西。使用了BDE的Delphi程序,必须有BDE才能工作,所以必须?BDE一起发布。这样往往造成这样一种情况:只有几百K的应用程序,在将整个BDE加入之后,体积将近10M!这对于以轻薄短小为长的文件型数据库,简直是一个致命的弱点。 而且由于BDE要兼容太多的数据库,本身也有不稳定的毛病,往往出现令人头疼的问题。 同时,通过安装程序安装BDE驱动和设置数据库别名也是一件很麻烦的事情,这一切使得BDE在Delphi程序员中很不受欢迎。 在网上的Delphi技术论坛里,经常可以看到对BDE的一片咒骂之声……
(2) 使用ADO。
在Delphi5中,Inprise终于提供了一个比较彻底的解决方法,那就是ADO构件。从原理上来说,ADO与上述的第三方构件并无多大区别,只是它是Inprise官方开发的; 同时,它连接的不是某个具体的数据库,而是微软提供的ADO对象。
ADO(ActiveX Data Object,ActiveX数据对象)是微软提出的新标准, 从理论上来,能够支持任何类型的数据库(甚至包括流式数据)。微软力图将它树为新的统一数据库接口,吹嘘了它的许多优点。Inprise一直是微软不共戴天的竞争对手,对微软的标准嗤之以鼻(BDE即是一例),但是由于种种原因,Inprise终于承认了ADO。平心而论,用ADO来取代BDE的确是一个不错的解决方案,而且在Delphi中使用ADO也相当方便。从形势看,ADO应该是未来的方向。但是,ADO本身也是相当大的。
别人写的