德尔福嵌入式数据库
Posted
技术标签:
【中文标题】德尔福嵌入式数据库【英文标题】:Delphi embedded DB 【发布时间】:2011-02-06 14:18:47 【问题描述】:我需要一个 SMALL/LIGHTWEIGHT 数据库控件(可能作为单个 PAS 文件提供),我可以将其直接集成到我的应用程序中。我需要在少量表中存储相对少量的数据,并且我想快速访问一些列。我知道 Delphi 7 有很好的 BDE,但我不想在安装过程中给用户带来麻烦。
我使用 Delphi 7。
编辑: 我想我问错了问题。所以,这就是我真正需要的:How to store dynamic data (unknown number of fields) to a file?
【问题讨论】:
查看问题:***.com/questions/222699/… 嘿!我会用 1) 缩小问题范围,如上所述,您只需要一个存储引擎 2) 因为您希望它静态链接,许可证很重要 3) 是否可以使用多个文件。我个人会选择 TClientDataSet 或 ADO/Jet 【参考方案1】:NexusDB 提供免费的embedded 版本。这是Example
【讨论】:
你认为它在什么方面是矫枉过正的?它完全编译到您的应用程序中,没有任何外部依赖项(并且它是模块化的,例如,如果您不需要使用 SQL,则不需要将 SQL 支持编译到您的应用程序中)并提供与您在中所说的 BDE 类似的功能如果不需要安装它,您会使用您的原始帖子。 @Engler。请参阅 PhilW 的帖子。目前我正在查看 TDBF。它要小得多。它几乎不会增加应用程序的大小,尤其是编译时间!!!【参考方案2】:如果您承诺不再在应用程序中包含任何依赖项,请查看TClientDataSet
。
我推荐某种“嵌入式”数据库。示例:为了将 Firebird 用作嵌入式数据库,您至少只需提供一个 DLL。您可以将该 DLL 放在您的安装程序中,这样用户就不需要安装任何东西。
【讨论】:
Sqlite 是另一种选择(也有 1 个 DLL)。 虽然我喜欢 Nexus DB 替代方案,但我认为 TClientDataSet 是最好的选择,更不用说它随 Delphi 一起提供了这么多版本。【参考方案3】:作为替代方案,免费软件 TDbf 数据库怎么样?它直接编译到您的应用程序中,并且对于轻量级使用是可靠的。
另外,如果您足够大,还记得 DBase 是标准桌面数据库平台的日子,那么您可能已经知道如何使用它了。 :-)
在http://tdbf.sourceforge.net
(如果最近似乎没有很多活动,那是因为它已经存在了 10 年并且非常稳定)。
只是一个想法。
【讨论】:
谢谢。我真的很喜欢 TDBF。我刚刚安装了它。我会用它做实验。我得看看它是否支持二进制字段。 re:没有活动 - 那是因为 dBase(及其所有分支)格式已过时。 嗨蠕虫。我已经看到了。可悲的是。最糟糕的部分是文档不存在。 ***.com/questions/4920159/… @Altar,至少老了也意味着很有名:-) 测试TDBF非常稳定。但是,如果您想稍后将应用程序升级到 Unicode 版本的 Delphi(谁知道您的成功前景如何?),您可能会遇到问题。【参考方案4】:你可以试试SQLite。它是一个优秀的嵌入式数据库。快速、可靠,而且价格无可匹敌(开源、公共领域)。有许多 Delphi 包装器,或者如果您想要一个轻量级的解决方案,您可以直接使用该库。
【讨论】:
+1 用于 SQLite。与大多数(可能是所有)其他关系数据库相比,易于使用、灵活且超快速。【参考方案5】:两个开源解决方案(从 Delphi 6 到 XE):
一个 ORM oriented solution,可以使用 SQLite 或纯 Delphi 存储来存储数据。它可以是独立的,也可以是客户端/服务器。
一个very fast pure Delphi NoSQL table storage engine。示例基准能够在 800 毫秒内存储 1,000,000 条记录,其中包含一个整数和一个文本字段(自动创建索引)。您创建自己的表格列,然后通过后期绑定访问字段内容。
【讨论】:
+1 我还没来得及测试表格,但我 100% 确信它写得很好并且像所有概要产品一样可靠,干杯 A。【参考方案6】:如果有一些预算要花,试试AnyDAC。它提供本机和嵌入式 SQLite 访问,因此您甚至不必提供外部 DLL。
【讨论】:
UniDac 好多了 devart.com/unidac 但这是我个人的看法... 真的吗?我很想听到更多关于它的信息。我正在使用 AnyDAC,对此我很满意,但我对 UniDAC 了解不多。 嗯?我对 UniDac 有落后的经验。比较 AnyDAC 和 UniDac SQLite 驱动程序 - AnyDAC 是无与伦比的。静态链接、加密、它们的服务组件、文档。【参考方案7】:TurboPower FlashFiler
【讨论】:
该代码自 2003 年发布以来一直没有得到积极维护。 @Thorsen:我知道,但我猜它适用于 Delphi 7? 嗯,在 FlashFiler 的最后一个发布版本中存在许多错误,据我所知,自从 FF 开源以来,还没有对 FF 进行任何工作。它还存在许多基本的设计问题。这就是为什么我从头开始开发 NexusDB 作为 FlashFiler 的精神继承者的原因之一。我可能对此不是很客观;)但是 IMO,鉴于提问者的要求,NexusDB 的免费嵌入式版本将是比 FlashFiler 更好的选择。 @Thorsten(这次是两个 t...:),我不熟悉 NexusDB,但我知道你在这个项目上做得很好。赞!我一点都不怀疑 NexusDB 比 FF 好,我只是想让 OP 了解这个项目。【参考方案8】:我试过了(按轻量级排列):
NexusDB - 商业的,太大了,无法满足我的需要;增加了相当多的开销 DISQLite - 看起来很强大;难以使用 kbmMemTable - 商业,未记录,仅供试用用户使用(除非您购买符合试用概念目的的文档,否则无法试用) TDBF - 免费但不再维护;它也完全缺乏文档 概要 BigTable - 似乎是我需要的解决方案。它仅包含 2 个 PAS 文件。在某些情况下,自定义系统可能比通用系统更适合。所以,对于我需要的东西,我会定制我自己的系统。因为我知道数据的大小/类型,所以我可以制作完全适合我的数据的字段。这样数据库大小会更小,速度更快(而且它是免费的)。 :)
解决方案:How to store dynamic data (unknown number of fields) to a file?
【讨论】:
【参考方案9】:-
来自JVCL 的 JvCSVDataSet 和 JvCSVBase
kbmMemTable
Embedded Firebird server
jbDBF
【讨论】:
kbmMemTable 真的很烂。它无法试用,因为除非您(单独)付费,否则此商业组件的帮助文件不可用。所以,没有手册 = 没有机会试用它。【参考方案10】:虽然手册是付费的,但实际组件是免费提供的,包括一个非常广泛的演示应用程序,展示了许多功能。此外,互联网上有很多关于如何使用它的信息。 使用 www.codenewsfast.com 或 google.com 进行搜索。
最好的问候 金马德森 kbm@components4developers.com
【讨论】:
以上是关于德尔福嵌入式数据库的主要内容,如果未能解决你的问题,请参考以下文章