Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi:从BDE迁移到DBExpress教程_Delphi_Dbexpress_Bde - Fatal编程技术网

Delphi:从BDE迁移到DBExpress教程

Delphi:从BDE迁移到DBExpress教程,delphi,dbexpress,bde,Delphi,Dbexpress,Bde,我正在尝试使用BDE和DBF/MDX数据文件将Delphi应用程序迁移到使用本地数据文件的DBExpress 简单地用TClientDataset替换TTable组件会导致涉及索引属性的错误 我在谷歌上搜索了一下,只找到了Bob博士的一篇文章,其中没有提到索引,也没有演示如何使用排序方法。所有其他文章都是DBExpress的一般描述,没有与我相关的细节 是否有要遵循的步骤的教程/示例?IMHO、TTable和TClientDataSet是非常不同的数据访问方法。我将建议两种迁移路径: 正如您所说

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

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

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


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

IMHO、TTable和TClientDataSet是非常不同的数据访问方法。我将建议两种迁移路径:

  • 正如您所说的DBF/MDX,请注意Advantage数据库和TAdsTable。您会发现它比TClientDataSet和dbExpress更兼容TTable
  • 将其视为迁移路径。TADTable看起来是一个兼容的、更快速的TTable替代品,另外还有其他Anydac功能

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

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

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


    如果您正在寻找小型和免费的引擎(只有当您的应用程序是GPL时,MySQL才是免费的),或者可以从商业引擎的精简版本中获得其他几个引擎,那么您应该考虑其他替代方案,如SQLite、Firebird(如果您只需要本地访问,则有一个“嵌入式”版本)或Postgres(即SQL Server Express和Oracle Express)或相对便宜的。你找不到这样做的人是有原因的;这不仅仅是个坏主意,可能几乎不可能

    我想建议您放弃使用CeleDeDaseTobe的想法,因为它不被认为是“您所需要的唯一数据库”,并且考虑使用iBobObj[Suffer],再加上FieldBler[Field],或DbExpress +支持的SQL DB,或者使用Delphi来生成的BaseExpress(iBX)组件。 您会发现,您或者需要一个完整的关系型SQL dbms,甚至是一个很小或很轻的dbms,来替换BDE,甚至是您可能已经习惯于使用dBase、Access或Paradox表的功能集


    在这种情况下,该选项将完全适用于您的情况。

    您的具体问题没有什么意义。为什么要用ClientDataSet替换TTable?请详细说明您要完成的任务?您认为TClientDataSet是替换TTable的“无所不能”组件吗?您希望TClientDataSet可以做您想做的一切吗?没有人我能猜出你想要什么。也许是一个代码示例?你是在使用BDE和dBase文件吗?请澄清。我写了一系列关于将BDE应用程序转换为dbExpress/Firebird的博客文章。你可能想看看这篇文章:几年前,我为code Rage III制作了一个关于BDE迁移的视频。这个应用程序被一个非营利组织使用。我更愿意使用免费数据库。你可以将Anydac(商业版)与免费数据库一起使用——Firebird、PostgreSQL、SQLite、SQL Server Express等。这些备选数据库之间有什么功能比较吗?你可以从这里开始:,但你应该真正寻找最适合你需要的数据库。