15

我正在创建一个用 Delphi 编写的桌面应用程序,并且正在为我的应用程序寻找一个数据库。

可用选项的数量让我有点不知所措。我非常感谢其他开发人员根据他们的经验提出的一些建议和见解。

关键因素

  • 低购买成本或无购买成本。

  • 没有分销费用。

  • 轻松轻松地处理多达 35,000 条记录,最好是 100k。

  • 支持多个表(在这种情况下最多 10 个)

  • Blob 支持(二进制对象、图像等)

  • 可以作为应用程序安装集的一部分分发。IE用户不必到别人的网站下载数据库安装程序。

  • 可以通过安装集以最少的用户交互进行安装和配置。我的目标用户群没有技术倾向。

  • 相当快的性能。

  • 支持标准 SQL 语句(或相当接近的东西)

  • 支持多个索引

不太重要

  • 数据库安装大小
  • 安装在用户系统上后的数据库大小。

不重要,但如果有的话很好

  • 多用户支持
  • 加密
  • 可扩展性
4

18 回答 18

21

火鸟是一个很好的选择。它满足您的所有要求,有出色的管理工具可供使用(IBExpert,即使是免费版本也是我用于数据库的最佳工具),您可以在 Delphi 中编写自己的用户定义函数以满足特殊要求您的应用程序可能有。雅虎集团的支持小组似乎跳过了任何人提交的任何支持请求。总而言之,对于我的桌面应用程序,我认为我不能做得更好。

于 2009-07-27T18:56:24.657 回答
10

一个不错的选择是使用SqliteDelphi 2009有一个包装器。

它将非常非常好地处理这种大小的数据库,并且完全免费使用和分发,稳定、健壮,并且几乎支持您的所有要求。

于 2009-07-27T18:46:57.763 回答
6

有趣的是,还没有人提到这一点,但SQL Server Express(免费)可以满足您的所有需求。Express 版本的数据库大小限制为 4GB。您可以使用Devart 的 SQL Server Direct Access Components(简称 SDAC)在您的 Delphi 应用程序中与它进行通信。

此外,可能值得特别关注2005 版,因为它的安装要求不那么繁重(2008 需要 .NET 3.0)。

于 2009-07-27T22:20:33.497 回答
3

Firebird SQL Embedded 是 +100,这是一个 5-6MB DLL 中的完整 RDBMS。支持你所有的 requerimets 等等

于 2009-07-28T18:41:08.853 回答
3

ElevateDB是一个嵌入式 SQL 数据库引擎,可以直接编译到您的应用程序中,并提供本地单用户和多用户访问(文件共享)和客户端-服务器访问,所提供的 ElevateDB 遵循 SQL 2003 标准的子集(ANSI/ ISO 9075)。

ElevateDB 中的一些标准功能包括:

  • 占地面积小
  • 多线程
  • ANSI/Unicode
  • 排序规则
  • 在线备份
  • 序列化交易
  • 约束
  • 触发器
  • 意见
  • 工作
于 2009-07-27T19:15:00.500 回答
2

MySQL始终是一个显而易见的选择。您可以它嵌入到您的应用程序中,这样您就不需要服务器(您只需要包含 libmysqld.dll 即可获得完整的数据库功能)。

它功能强大、速度快、相当轻巧,并且在需要时,您只需切换到“普通” MySQL 服务器,而无需更改代码或查询。

无需安装。

有大量的免费示例、文档、工具和驱动程序可用于一般的 MySQL,但也可与 Delphi 结合使用。

............

这是清单:

  • 低购买成本或无购买成本。它有 2 个许可证:GPL(免费)和商业许可证

  • 没有分销费用。据我所知,您可以自由地重新分发它

  • 轻松轻松地处理多达 35,000 条记录,最好是 100k。我将它与具有多达 30.000.000 条记录的表一起使用,并且它可以毫不费力地工作(当然,如果您仔细考虑您的查询)

  • 支持多个表(在这种情况下最多 10 个)检查

  • Blob 支持(二进制对象、图像等)检查

  • 可以作为应用程序安装集的一部分分发。IE用户不必到别人的网站下载数据库安装程序。只需添加 libmysqld.dll 即可

  • 可以通过安装集以最少的用户交互进行安装和配置。我的目标用户群没有技术倾向。无需安装。它嵌入到您的应用程序中

  • 相当快的性能。非常快,我可以告诉你

  • 支持标准 SQL 语句(或相当接近的东西)检查

  • 支持多索引检查

  • 数据库安装LibMySqlD.dll 的大小是几兆字节

  • 安装在用户系统上后的数据库大小。当然取决于你的数据库。它没有被压缩

  • 多用户支持据我所知,嵌入式版本中没有多用户支持

  • 加密本机不支持加密数据文件,但存在第 3 方解决方案

  • 可扩展性如果您的嵌入式服务器无法处理某些内容,则可以在不更改代码或查询的情况下切换到“普通”或外部服务器

............

限制:

您没有复制或事件,只有一个 InnoDB 线程,没有身份验证或授权机制,只有您的应用程序可以访问数据库(对嵌入式数据库有意义)。

于 2009-07-28T00:14:57.327 回答
2

我对ComponentAce 的Absolute Database 很满意。它会编译到您的应用程序中,这样您就可以得到您的程序和数据库文件。它是 SQL 92 兼容 blob,不会使您的代码过于臃肿,具有多用户选项,起价约为 100 欧元。源代码和多用户选项的最高价格约为 350 欧元,不便宜但没有分发许可证。

于 2009-07-27T20:34:10.607 回答
2

PostgreSQL是一个很棒的数据库服务器。它的占地面积非常小,您可以非常轻松地自定义安装。它的重量为 10mb 或 < 10mb,并且可以通过多种不同的方式进行配置,以优化性能或系统使用。

有一个delphi接口:http ://dbslim.berlios.de/

关于 PostgreSQL 的一件事是它可以很好地扩展(从非常小的部署到大型部署)。我在几个项目中使用它,我对它非常满意。

于 2009-07-27T18:49:42.360 回答
1

看看NexusDB。我们发现它既稳定又快速,并且它周围有一个很好的社区。

于 2009-07-27T22:53:39.543 回答
1

DiSqlLite(SQLLIte 的另一个包装器)是一个不错的选择。有很多管理实用程序可以帮助您开始工作。部署非常简单。我通过编写一个执行所有数据库访问的 delphi n-Tier 服务器在一个多用户项目中使用它。

于 2009-07-27T19:14:14.760 回答
1

我对DBISAM很幸运。它已被ElevateDB取代,我将用于新项目。

我也喜欢我可以进行 XCopy 安装。

于 2009-07-27T19:14:41.950 回答
0

如果NexusDB太贵,你可以试试FlashFiler,这是一个用 Delphi 编写的免费开源数据库。我认为它是 NexusDB 的祖先。自从它成为开源以来,它几乎没有维护,但它有很好的文档记录并满足您的所有要求。

FlashFiler 是免费的,支持 blob、非常大量的记录、索引和表。它可以嵌入到单个可执行程序中(不需要 DLL),或者作为多用户客户端-服务器数据库运行。它速度很快,并提供 SQL 和记录级访问。有一些轻量级的内置加密,或者您可以添加自己的例程。

例如,我有一个作为单用户数据库嵌入的程序,可执行文件为 3MB,不需要任何 DLL。这很容易访问 50 个总大小为 15MB 的表。(我还将 FlashFiler 与更大的客户端-服务器数据库一起使用。)

于 2010-08-03T12:02:35.213 回答
0

我的另一个选择是具有完全多用户支持自动编辑刷新内容的 Dbase IV、V 格式。我从 www.softsci.com 推荐了 Topaz

我将它用于多用户和桌面应用程序。数据库永远不会崩溃,并且可以轻而易举地处理数百万条记录。

维提桑

于 2009-08-13T07:54:19.263 回答
0

同样,结果看起来是压倒性的,因为每个响应都是针对不同的数据库。

我的投票投给了 SQLite。

但是...看起来 Access 数据库也可以满足您的需求。需要零安装,只需 Windows 和 ADO 或类似软件,一切顺利。

这是访问限制的链接。

http://www.databasedev.co.uk/access_specifications.html

约翰

于 2009-07-28T00:49:02.283 回答
0

为什么还没有人提到 MS Access 数据库?所需的驱动程序(ADO / Jet)预装在每个最新版本的 Windows(XP、Vista ...)中,支持多用户、加密、Blob 和 SQL,并且速度相当快。不过,请注意最大数据库大小。

编辑:我真的不明白为什么这个答案被否决了。我已经多次在 Delphi 中使用 MS access dbs,效果很好。当然,它并不适用于繁重的多用户安装,也不是最快的,但这不是问题的要求。

于 2009-07-28T06:27:16.263 回答
0

使用嵌入式 MySQL (libmysqld.dll) 既简单又方便。

但是您无权使用您的应用重新分发 libmysqld.dll,除非您:

  1. 向全世界开放您的应用程序源代码(GPL 许可)或
  2. 从 MySQL(现为 SUN)购买商业许可证——尚不清楚它的成本是多少
于 2009-08-26T06:24:12.390 回答
0

像史蒂夫一样,我也对易于使用的数据库工具感兴趣。在过去的 5-6 年里,我并没有真正在 Delphi 中进行过太多编程。我从 Turbo Pascal 3.0 开始,第二天去 TP5 买了名为 Borland 的 TP6,然后降级到 TP5.5。我购买了 Delphi 3 Professional,升级到 Delphi 5 Enterprise,这就是我目前拥有的。我刚刚下载了 Delphi 2010 的试用版 。Delphi 与之交互的数据库

缺乏易用性和易于部署的数据库,这让我感到很沮丧。我喜欢 SQL,我希望我的 SQL 代码在存储过程中。我希望能够测试我的 SQL 代码并在我的应用程序内外验证我的数据。

我刚刚花了 2.5 个小时查看ElevateDB并阅读论坛. 他们回答用户问题的方式给我留下了深刻的印象。我希望这个产品能像我想的那样工作。我刚刚注册了试用下载。

于 2009-10-24T21:05:01.780 回答
0

DBISAM 和 Elevate 都很棒。

于 2009-07-30T07:00:37.113 回答