我正在尝试使用BDE将一个带有DBF/MDX数据文件的Delphi应用程序迁移到使用本地数据文件的DBExpress。
简单地用TClientDataset替换TTable组件会导致涉及索引属性的错误。
我在谷歌上搜索了一下,找到的只是Bob博士的一篇文章,没有提到索引,也没有演示如何使用排序方法。所有其他文章都是对DBExpress的一般性描述,没有与我相关的细节。
是否有要遵循的步骤的教程/示例?
发布于 2012-02-06 23:38:38
TTable和TClientDataSet是非常不同的数据访问方法。我将建议两条迁移路径:
发布于 2012-02-06 23:46:47
不幸的是,作为本地数据库引擎,TClientDataset本地文件不能替代BDE。基本上,它们是内存中的数据集,能够将数据保存在磁盘上。但是它们缺少许多你可以在BDE中找到的特性。如果您的需求很小,则它们可以工作(您可以在客户端数据集TIndexDefs属性中定义索引),但它们可能不是您所需要的。
此外,TClientDataset不是与dbExpress相关的组件。它们实际上是在MIDAS (后来更名为Datasnap)中引入的,作为多层应用程序中远程数据集的客户端(由此得名)(磁盘存储的功能允许断开连接的操作)。
dbExpress是一个数据访问层,可以通过“驱动程序”与不同的数据库服务器协同工作,就像ODBC/BDE/OLEDB一样。决定在dbExpress中只使用单向数据集,重用现有TClientDataset的缓存/游标功能来提供双向游标和缓存。如果仅使用TClientDataset,则根本不使用dbExpress,并且TClientDataset可以处理实现所需接口(包括BDE接口)的任何dataset。
如果你正在寻找小型的免费引擎(MySQL只有在你的应用程序是GPL的情况下才是免费的),你应该看看像SQLite,Firebird (如果你只需要本地访问,有一个“嵌入式”版本)或Postgres这样的替代品,或者有几个商业引擎的精简版本(即SQL Server Express和Oracle Express),或者相对便宜的引擎。
发布于 2012-02-07 04:20:51
你找不到这样做的人是有原因的;这不仅仅是一个糟糕的想法,而且可能几乎是不可能的。
我建议你放弃使用ClientDataSet的想法,因为它不会被认为是“你永远需要的唯一数据库”,并考虑使用IBObjects商业版!加上火鸟免费,或dbExpress +一个受支持的SQL Db,或Interbase Express (IBX)组件,随Delphi提供。
您会发现,您需要一个完整的关系型SQL dbms,甚至是一个非常小或很轻的关系SQL dbms,来替换BDE,甚至是您可能已经使用过的dBase、Access或Paradox表的特性集。
在这种情况下,usual tutorials完全适用于您的情况。
https://stackoverflow.com/questions/9161583
复制相似问题