在Delphi中用ADO连接FoxPro数据库
VisualPro,即VFP,那个小狐狸头,在学校时拿它做数据库理论教育,但自从6.0之后就从未接触它了,听说出在有9.0,但我觉得它的时代已经过去了。例外的是,现在还发现有人用VFP写的应用,还是号称ERP的呢,难以置信吧?!为了取用VFP数据库(也就是.dbf文件)里的数据,不得已重新捡起这“老古董”。当然,我不会为了它再安装一个VFP6.0,应该可以通过ADO连接的,而且,就一个简单的数据查询,没有复杂的操作,用Delphi写个小程序即可。
开始用ADOConnection控件连接数据库,但发现,“提供程序”列表里根本没有适合VFP的驱动!转而想想创建一个ODBC Link File再在ADO里引用吧,在“ODBC数据源管理器”里倒是列出了不少VFP(或者*.dbf)有关的驱动,可惜是虚设的,当你点击它时会弹出要求下载安装的提示(-_-!):
回到ADOConnection控件,试着选了“Microsoft OLE DB Provider for ODBC Drivers”,然后,“1.选择使用数据源名称”,在列表里选择“dBASE Files”;2.“输入登录服务器信息”可以忽略;“3.输入要使用的初始目录”,将存放.dbf文件的目录路径复制到其中,完整的连接串是这样的“Provider=MSDASQL.1;Persist Security Info=False;Data Source=dBASE Files;Initial Catalog={DATA_PATH}”(其中{DATA_PATH}是.dbf存放路径)。点击“测试连接”居然成功了,然后试试ADOTable和ADOQuery连接其中一个文件,也成功地看到了表中的数据。但是,这并不意味着完全成功了,这只是dBASE驱动“部分兼容”早期的VFP数据库,再试试其它的.dbf文件时,你会发现产生错误了:
发生“意外错误”,不必找其原因了,估计是没法解决的,因为本来就没用对驱动,还是另寻它法吧,哈哈~
开始GOOGLE VFP的驱动,发现了一标题为“不包括在 MDAC 2.6 或更高版本的 visual FoxPro ODBC驱动程序”(这是机器翻译的)的文章,看标题就知道VFP驱动真是很有年份了!因为现在至少是用MDAC2.7了。跟着文章找到了Microsoft OLE DB Provider for Visual FoxPro 9.0,似乎没有中文版的,将就着用吧。下载安装,发现还有Sample data and program file,不错!安装完后(记得重启Delphi),发现ADOConnection控件的“提供程序”列表里多了一项“Microsoft OLE DB Provider for Visual FoxPro”,对了,要的就是它!
迅速用这个驱动连接数并测试,发现刚才用“dBase Files”驱动连接出错的文件能正常连接了。完成的连接串是:“Provider=VFPOLEDB;Data Source={DATA_PATH};Password="";Collating Sequence=MACHINE”(其中{DATA_PATH}是.dbf存放路径)。
用ADOTable控件取数据就简单了,直接可以先表名(也就是.dbf文件的文件名),而用ADOQuery控件查询时,则直接“SELECT * FROM dbfilename”,其中dbfilename就是.dbf文件名,可以要扩展名也,也可以不要扩展名。
至于更复杂的操作要慢慢试了,想必跟操作数据库大同小异了。(^_^)