【问题标题】:Delphi: Migrating from BDE to DBExpress TutorialDelphi:从 BDE 迁移到 DBExpress 教程
【发布时间】:2012-02-06 14:24:39
【问题描述】:

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

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

我在 Google 上搜索了一下,发现的只是 Bob 博士的一篇文章,其中没有提及索引,也没有演示如何使用排序方法。所有其他文章都是对 DBExpress 的一般描述,与我无关。

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

【问题讨论】:

  • 您的具体问题毫无意义。为什么要用 ClientDataSet 替换 TTable?详细说明您要完成的工作?你认为 TClientDataSet 是替代 TTable 的 Do Everything 组件吗?您是否希望 TClientDataSet 能够满足您的所有需求?没有人能猜到你想要什么。也许是代码示例?您是否将 BDE 与 dBase 文件一起使用?请说清楚。
  • 我写了一系列关于将 BDE 应用程序转换为 dbExpress/Firebird 的博客文章。你可能想看看这个条目:nbnewman.blogspot.com/2009/09/using-dbexpress-conclusions.html
  • 几年前我为 Code Rage III 制作了一个关于 BDE 迁移的视频learndelphi.tv/…

标签: delphi dbexpress bde


【解决方案1】:

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

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

【讨论】:

  • 此应用由非营利组织使用。我宁愿使用免费的数据库。
  • 您可以使用 Anydac(商业)和免费数据库 - Firebird、PostgreSQL、SQLite、SQL Server Express 等。
【解决方案2】:

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

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

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

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

【讨论】:

  • 这些替代方案之间是否有任何功能比较?
  • 您可以从这里开始:en.wikipedia.org/wiki/…,但您真的应该寻找最适合您需求的那个。
【解决方案3】:

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

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

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

在这种情况下,usual tutorials 完全适用于您的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    相关资源
    最近更新 更多