【问题标题】:FireDac - how to use transactions with paradox tablesFireDac - 如何使用具有悖论表的事务
【发布时间】:2018-11-19 11:30:16
【问题描述】:

不幸的是,我必须使用使用悖论表的古老软件。 以下代码给了我例外:

fdcMainPX->TxOptions->AutoCommit=false;
fdcMainPX->StartTransaction(); <---

“项目 xxx 引发异常类 EFDException,消息为 '[FireDAC][Phys][ODBC]-303。不支持功能'”

看来,paradox 的 windows odbc 驱动程序不支持事务。我想 ole jet 引擎允许有悖论的交易,但我宁愿使用 Firedac 而不是 ADO 或 BDE。 如何建立与 fireac 的连接以使用 MS Ole db? 也许还有另一种方式? 我正在使用带有 Firedac 的 C++ Builder XE6 Pro

【问题讨论】:

  • 我没有看过 FD 源码,但是是什么让你认为它支持 PDox 表上的事务?这对我来说似乎不太可能,因为 PDox 是一个文件系统数据库。
  • 我相信@MartynA。 MS ODBC 驱动程序is not capable of transactions(信息类型SQL_TXN_CAPABLE;FireDAC 检查并变成该异常)。我相信 Paradox 本身不能进行交易(也许是 新的,Corel 产品的一部分)。甚至 BDE 也使用了所谓的local transactions 来对付它。
  • @Victoria :我完全意识到这一点,现在我将 BDE 与本地事务一起使用,这有点工作,但它很丑陋、陈旧而且......我也不想:P。我希望有类似于 fireac 中的“缓冲提交”的机制,尽管这似乎不太可能,因为没有人对此有答案
  • 啊,这就是重点:) 那么,使用cached updates
  • @Victoria :啊,没错!我没有考虑以这种方式缓存更新,请发布答案,我会接受。

标签: delphi c++builder firedac paradox


【解决方案1】:

Paradox DBMS 似乎根本不具备事务处理能力(也许它的新版本是 Corel 产品的一部分,但您的情况似乎并非如此)。

但是,如果您只想在单个连接会话中保持某些数据批次的一致性,您可以使用cached updates

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多