痛苦的历程:Ado访问PARADOX数据库

本文详述了在使用VC通过ADO访问Paradox数据库时遇到的困难,包括ADO缺乏Paradox引擎、数据库结构理解、连接方式选择等。作者尝试了Microsoft.Jet.OLEDB.4.0引擎、仿ODBC连接和通过ODBC数据源访问,并提供了相关代码示例。在数据表操作中,由于Paradox对BDE的依赖,导致在某些环境下出现错误。最后,作者分享了错误处理方法及对C/S架构改进的设想,以提高数据库操作效率。
摘要由CSDN通过智能技术生成

前面接手一个项目,需要用VC访问已经存在的PARADOX数据库。在接手这个项目前,对于PARADOX的理解少之又少,只知道有这么一种数据库,并不了解它的结构是什么。真正对它进行操作的时候,才发现是如此之难。有几次差点都放弃了,但最后一咬牙,总算坚持过来了。在这期间,我走了不少的弯路,也有了一些心得,下面写下来,做为一个总结,也为其他同道少走一点弯路起一点提示作用吧。
1、PARADOX数据库结构
PARADOX数据库是Boland以前在DELPHI下利用BDE进行操作的桌面数据库,目前已经很少使用,以致ADO都不提供它的引擎了(也害得我吃了不少苦头)。PARADOX数据库本身以独立的表存在的,一个表就可以看成是一个库,或者也可以说是一个文件夹就是一个库,文件夹里的PARADOX数据表就是该库的各个表。PARADOX数据表的扩展名是db,此外还有一些其他的文件类型,作为数据表的辅助,但用ADO对其进行处理时,使用*.DB的文件就已经足够。
2、连接到PARADOX数据库
前面已经提到过,ADO没有PARADOX数据库的引擎,要用ADO访问PARADOX数据库,我试过三种方式来进行操作:用Microsoft.Jet.OLEDB.4.0来替代PARADOX数据库引擎;用仿ODBC的连接语句操作;建立ODBC数据源,然后用ADO来访问ODBC。还有一种是用VC来封装BDE API,在ww.codeproject.com上可以找到相关的内容。对于最后一种方法,用他的例子却实效果不错,但真正移直到我的程序上时却费了很大劲,并且效果不好,主要是我对于BDE操作方式太不理解了,花了好多时间,最终以放弃告终。
下面我就说明用前三种方式来进行连接到数据库的操作。其实这三种方式都没有太大的差别,只是连接语句不同而已。
(1)用Microsoft.Jet.OLEDB.4.0引擎。这种方式访问时跟连接到其他数据库没什么差别:
 _ConnectionPtr m_pDb;
CString connectsource;
connectsource.Format(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s//shared;Extended Properties=Paradox 5.x;Persist Security Info=False",strCTRSRoute);
 try  //检查数据库连接是否正常
 {
  m_pDb.CreateInstance(__uuidof(Connection));
  m_pDb->ConnectionTimeout=10;
  m_pDb->CommandTimeout=20;
  if(m_pDb->State!=adStateClosed)
  {
   m_pDb->Close();
   m_pDb->Open((_bstr_t)connectsource,"","",adModeUnknown);   
  }
  else   
  {
   hr=m_pDb->Open((_bstr_t)connectsource,"","",adModeUnknown);
  }
 }
 catch(_com_error e) //捕捉异常
 {
  LogAdoErrorImport(m_pDb);  
 }
说明:connectsource变量保存了连接信息,由此我们可以看到,所谓数据库的数据源,仅指是连接到PARADOX数据表放的位置Data Source=%s//shared,“shared”为一文件夹名,在该文件夹下面有PARADOX数据表,而不是具体指向哪一个数据表。同理,在下面的两种方式中,数据源也仅指向包含PARADOX数据表的文件夹。除了异常处理外在后面要详细说明外,其他的操作与其他ADO操作没有差别,在此不再冗续。
ÿ

一套操作数据库(*.db,DBF) 的工具,功能非常的强大。 2000版功能: 包括建立数据表、删除数据表、索引、排序、打印、预览、数据转换、数据备份、修改数据表结构、输出文本、输出HTML文件、统计查询、字段求合、生成决策图表等功能。 2002版新增功能: 1、多窗口(MDI)与单窗口两种模式 2、提供最近使用路径 3、提供BDE版本检查 4、设置进入口令 5、给数据表填加口令 5、设置启动目录 6、复制记录、复制当前字段名称、复制字段名列表、复制选择区域数据 7、改进SQL执行功能 8、改进数据转换功能 9、记录查找功能 10、自动生成创建表SQL语句 11、设置数据移动位数 12、改进了建立索引功能,现可以建立主重索引(多个字段) 13、自动显示当前字段类型/宽度/字段总数/索引字段 Xp版新增功能: 1、加入了功能强大的报表设计、报表打印功能。可自己根据数据库设计报表,还可以把设计好的报表另存为报表文件,也可输出如Html格式等。 2、加入了BDE数据库驱动程序,解决了以前下载后没有驱动程序不能正常运行的问题。 Xp 2002.11 版新增功能:(右击菜单) 1、加入对数据的剪切、复制、粘贴、删除功能。可直接把一张表内的数据复制到另一张表内,也可以把一张表的某字段的数据复制到另一张表的某字段。功能非常实用。(选择区域内数据) 2、加入输出Excel、Html、rtf、csv、txt文件格式。(选择区域内数据)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值