Visual FoxPro的数据引擎与ADO相比有什么优势呢?
Visual FoxPro数据引擎系统资源耗用小,ADO毕竟是COM组件要花用更多的资源。
作为系统共用组件,使用ADO可能会在不同应用系统中产生ADO的版本问题,这就像我们常遇见的ActiveX的控件版本问题。
ADO只是数据存取组件,它没有数据处理功能,要处理数据必须使用客户应用程序,如VB、Delphi。Visual FoxPro数据引擎同时支持数据存取、数据处理,我已多次强调Visual FoxPro在这两方面的伟大功能;
ADO没有本地数据库作为强大的支持,有需要将远端数据暂时存放在物理文件中ADO绝对不及Visual FoxPro。Visual FoxPro的数据库是桌面数据库中最好的,远端数据暂存其中不仅方便,而且伸缩性强。
使 用ADO从数据源获得数据以后,再要对数据集合进行分组、查询、汇总是非常麻烦的事情,但是Visual FoxPro支持对Cursor的数据处理,我们可以使用绝大多数XBase语言(除了ZAP和Pack之类的表维护语言之外),还可以对Cursor执 行SQL语句——这种强大的威力,绝非ADO所能比拟。
开发单机程序时,绝对不要使用ADO,这样做既没开发效率也没运行效率; 开发C/S系统时我们应选用Visual FoxPro的SPT和Remote View,它们完全可以很完美的解决问题(已经有很多很多成功经验),不需要舍近求远地使用ADO;在中间层开发时,可以考虑使用ADO,我们为在此种情 况下使用ADO的开发效率是蛮高的,因为这时所有的代码都要我们用一句、一句的写出来(在其他开发环境也一样),Visual FoxPro的语法简单再加上Visual FoxPro 7的极为强大Intellisense功能(真的很快并且可以由用户自定义),也许我们还会占些便宜的。
虽然ADO与Visual FoxPro是完全无关的系统,但他们却有共同的母亲——FoxPro 开发小组,原来ADO的光标集(Cursor Engine)是他们开发的。如果你同时了解ADO与Visual FoxPro,你会发现ADO的很多思路与Visual FoxPro一模一样……我总是拿这个典故说服那些不相信Visual FoxPro的人:最流行的ADO的光标集是FoxPro 开发小组写的,有什么理由怀疑Visual FoxPro的数据引擎——它是世界上最棒的!
Visual FoxPro是一种历史悠久的产品,很多用户是从FoxBASE到FoxPro到Visual FoxPro,这样一步一步过来的。历史的积淀多了,历史的包袱也重了——许多程序员往往抓住老产品而忘了深入钻研新产品的新特性,这是一种悲哀。
我遇到许多所谓会使用Visual FoxPro的人,还口口声声叫“Query Design”为“RQBE”,朋友那可是DOS时代的概念了。
很 多人不仔细钻研Visual FoxPro,只是从其他工具中看到某项功能,凭空想象就说:Visual FoxPro不支持的。Delphi中特别指出它有异构数据关联能力,比如:父表是SQL Server数据,子表是Access数据,要求建立关联,实现“一多关系”。在Delphi要求使用特别的SQL语法来实现该功能。Visual FoxPro的文档里好像没特别说明这项功能,是不是没有呢?如果你深刻理解Visual FoxPro的远程视图及Cursor的用法,答案很容易得到。事实上,用Visual FoxPro能更直接、简单实现的实现:建两条“连接”、两个“远程视图”,对子表加索引,Set relation to,set skip to……
反 过来Visual FoxPro能实现的功能,Delphi的BDE(Delphi的本地引擎)却不能:Visual FoxPro的远程视图能够将多个表关联后的结果集设定为“可更新”,并在数据变动后自动产生Update子句分别更新后台数据。例如:对SQL Server中Pubs数据库建立连接,新建远程视图为:
CREATE SQL VIEW TEST VIEW REMOTE CONNECTION CONNECTION1 AS SELECT Publishers.pub_id, Publishers.pub_name, Titles.title_id, Titles.title, Titles.price, Authors.au_id, Authors.au_lname, Authors.au_fname, Authors.phone, Authors.address FROM dbo.publishers Publishers, dbo.titles Titles, dbo.titleauthor Titleauthor, dbo.authors Authors WHERE Titles.pub_id = Publishers.pub_id AND Titleauthor.title_id = Titles.title_id AND Authors.au_id = Titleauthor.au_id ORDER BY Publishers.pub_id
这是四个 表间的关系,算是比较复杂的SQL语句。别担心,这一切在Visual FoxPro只不过是用鼠标在“视图设计器”点击几次就行了。在您对视图进行“添加、删除、修改”并发送更新时, Visual FoxPro会进行分析地智能,产生Update字句分别将变化更新到后端若干个表中。而Delphi的BDE只能对Xbase数据源有此的作用,对其他 的数据源都无此功能。Visual FoxPro可以支持所有的ODBC数据源(只要数据源本身支持),如:Oracle、SQL Server,Access……当然在Delphi 5.X中可以通过ADO弥补此缺陷,但Visual FoxPro同样支持ADO。Visual FoxPro的程序员要有这样的信心:Visual FoxPro为我们提供了最好的本地引擎!