1

我正在尝试使用带有 DBF/MDX 数据文件的 BDE 将 Delphi 应用程序迁移到使用本地数据文件的 DBExpress。

简单地用 TClientDataset 替换 TTable 组件会导致涉及索引属性的错误。

我用谷歌搜索了一下,我发现的只是 Bob 博士的一篇文章,没有提到索引,也没有演示如何使用排序方法。所有其他文章都是对 DBExpress 的一般描述,没有与我相关的细节。

是否有任何要遵循的步骤的教程/示例?

4

3 回答 3

1

恕我直言,TTable 和 TClientDataSet 是非常不同的数据访问方法。我将建议 2 个迁移路径:

  1. 正如您所说的 DBF/MDX,请注意 Advantage Database 和 TAdsTable。你会发现它与 TTable 比与 TClientDataSet 和 dbExpress 更兼容。
  2. 将 Anydac及其TADTable视为迁移路径。除了其他 Anydac 功能之外,TADTable 看起来是一种兼容且更快速的 TTable 替代品。
于 2012-02-06T15:38:38.023 回答
1

遗憾的是,TClientDataset 本地文件不能替代 BDE 作为本地数据库引擎。基本上,它们是内存数据集,能够将数据保存在磁盘上。但是它们缺少您可以在 BDE 中找到的许多功能。如果您的需求很小,它们可以工作(您可以在客户端数据集 TIndexDefs 属性中定义索引),但它们可能不是您所需要的。

此外,TClientDataset 不是与 dbExpress 相关的组件。它们实际上是与 MIDAS(后来重命名为 Datasnap)一起引入的,作为多层应用程序中远程数据集的客户端(因此得名)对应物(磁盘存储的能力允许断开连接的操作)。

dbExpress 是一个数据访问层,可以通过“驱动程序”与不同的数据库服务器一起工作,就像 ODBC/BDE/OLEDB 一样。决定在 dbExpress 中只包含单向数据集,重用现有 TClientDataset 的缓存/游标功能来提供双向游标和缓存。如果您仅使用 TClientDataset,则根本不使用 dbExpress,并且 TClientDataset 可以与实现所需接口(包括 BDE 接口)的任何数据集一起使用。

如果您正在寻找小型和免费引擎(MySQL 仅在您的应用程序是 GPL 时免费),您应该查看 SQLite、Firebird(如果您只需要本地访问,则有一个“嵌入式”版本)或 Postgres 等替代品,或者还有其他几种引擎可以从商业引擎的精简版本(即 SQL Server Express 和 Oracle Express)中获得,或者是相对便宜的引擎。

于 2012-02-06T15:46:46.527 回答
0

你找不到这样做的人是有原因的。这不仅仅是一个坏主意,它可能几乎是不可能的。

我想建议您放弃使用 ClientDataSet 的想法,因为它不会被认为是“您将需要的唯一数据库”,并考虑使用 IBObjects [商业!] 加上 Firebird [免费],或 dbExpress + Delphi 附带的受支持的 SQL Db 或 Interbase Express (IBX) 组件。

您会发现您需要一个完整的关系 SQL dbms,即使是非常小的或轻量级的,来替换 BDE 甚至是您可能已经习惯于使用 dBase、Access 或 Paradox 表的功能集。

在这种情况下,通常的教程完全适用于您的情况。

于 2012-02-06T20:20:50.613 回答