我正在创建一个用Delphi编写的桌面应用程序 我正在为我的应用程序寻找数据库。
我对可用选项的数量感到有些不知所措。 我非常感谢其他开发人员根据他们的经验提出的一些建议和见解。
低或无购买成本。
无分发费用。
轻松处理多达35,000条记录,最好不超过100k。
支持多个表格(在本例中最多10个)
Blob支持(二进制对象,图像等)
可以作为应用程序安装集的一部分进行分发。 I.E.用户没有其他人的网站下载数据库安装程序。
可以通过安装集以最少的用户交互进行安装和配置。 我的目标用户群在技术上并不倾向。
性能合理。
支持标准SQL语句(或合理关闭的东西)
支持多个索引
答案 0 :(得分:21)
Firebird是一个很好的选择。它满足您的所有要求,有可用的优秀管理工具(IBExpert,即使免费版本是我用过DB的最佳工具),您可以在Delphi中编写自己的用户定义函数以满足特殊要求你的应用可能有。雅虎集团的支持小组似乎跳过任何人提交的任何支持请求。总而言之,对于我的桌面应用程序,我认为我不能做得更好。
答案 1 :(得分:10)
一个好的选择是使用Sqlite。 Delphi 2009有一个包装器。
它将非常,非常好地处理这个大小的DB,并且完全免费使用和分发,稳定,强大,并且几乎支持您的所有要求。
答案 2 :(得分:6)
有趣的是没有人提到这一点,但是SQL Server Express(免费)会做你想要的一切。 Express版的数据库大小限制为4GB。您可以使用Devart's SQL Server Direct Access Components(简称SDAC)在Delphi应用程序中与它进行通信。
此外,可能值得特别关注2005 edition,因为其安装要求不是很重(2008需要.NET 3.0)。
答案 3 :(得分:3)
+100 for Firebird SQL Embedded,一个5-6MB DLL中的完整RDBMS。支持所有requerimets和更多
答案 4 :(得分:3)
ElevateDB是一个嵌入式SQL 可以编译的数据库引擎 直接进入你的应用程序和 提供本地单用户和多用户 访问(文件共享)和 使用提供的客户端 - 服务器访问 ElevateDB遵循的一部分 SQL 2003标准(ANSI / ISO 9075)。
ElevateDB中的一些标准功能包括:
答案 5 :(得分:2)
PostgreSQL是一个很棒的数据库服务器。它占地面积很小,您可以非常轻松地自定义安装。它的重量为或等于10mb即可发货,可以通过多种不同方式进行配置,以优化性能或系统使用。
有一个delphi接口:http://dbslim.berlios.de/
PostgreSQL的一个优点是它可以非常好地扩展(从非常小的部署到大型部署。)我在一些项目中使用它,我对它非常满意。
答案 6 :(得分:2)
MySQL 始终是一个明显的选择。您可以在应用程序中embed,因此您不需要服务器(您只需要包含libmysqld.dll以获得完整的数据库功能)。
它功能强大,速度快,相当轻巧,并且在需要时,您只需切换到“普通”MySQL服务器,而无需更改代码或查询。
无需安装。
一般来说,MySQL提供了大量免费的示例,文档,工具和驱动程序,但也与Delphi结合使用。
...........
这是清单:
低或无购买成本。 它有2个许可证:GPL(免费)和商业许可证
无需分发费用。 据我所知,您可以自由地重新发布
轻松处理多达35,000条记录,没有任何问题,最好可达100k。 我正在使用包含最多30.000.000条记录的表格,并且它可以正常运行(如果您仔细考虑您的查询)
支持多个表格(在这种情况下最多10个)检查
Blob支持(二进制对象,图像等)检查
可以作为应用程序安装集的一部分进行分发。 I.E.用户没有其他人的网站下载数据库安装程序。 只需添加libmysqld.dll,就是这样
可以通过安装集以最少的用户交互进行安装和配置。我的目标用户群在技术上并不倾向。 无需安装。它嵌入您的应用
性能合理。 我能告诉你的速度非常快
支持标准SQL语句(或合理关闭的内容)检查
支持多个索引检查
数据库安装的大小 LibMySqlD.dll是几兆字节
安装在用户系统上的数据库大小。 当然取决于您的数据库。它没有被压缩
多用户支持据我所知,嵌入式版本中没有多用户支持
加密本机不支持加密数据文件,但存在第三方解决方案
可伸缩性如果您的嵌入式服务器无法处理内容,可以在不更改代码或查询的情况下切换到“正常”或外部服务器
...........
限制:
您没有复制或事件,只有一个InnoDB线程,没有身份验证或授权机制,只有您的应用程序可以访问数据库(对嵌入式数据库有意义)。
答案 7 :(得分:2)
我对ComponentAce's绝对数据库运气不错。它会编译到您的应用程序中,以便您最终得到您的程序和数据库文件。它符合SQL 92与blob的兼容性,不会过多地破坏您的代码,具有多用户选项,可从大约100欧元开始使用。源代码和多用户选项最高可达350欧元,不便宜但没有分发许可证。
答案 8 :(得分:1)
看看NexusDB。我们发现它坚固而快速,周围有一个很好的社区。 p>
答案 9 :(得分:1)
答案 10 :(得分:1)
DiSqlLite(SQLLIte的另一个包装器)是一个不错的选择。有很多管理utilities可以帮助您开始工作。部署非常简单。我通过编写执行所有数据库访问的delphi n-tier服务器在多用户项目中使用它。
答案 11 :(得分:0)
同样,由于每个响应都针对不同的数据库,因此结果看起来势不可挡。
我投票给SQLite。
然而......看起来Access数据库对你来说也很好。需要零安装,只需Windows,ADO或类似,你就可以了。
以下是访问限制的链接。
http://www.databasedev.co.uk/access_specifications.html
约翰
答案 12 :(得分:0)
为什么还没人提到MS Access数据库?所需的驱动程序(ADO / Jet)预装了每个最新版本的Windows(XP,Vista ...),支持多用户,加密,Blob和SQL,速度相当快。但要注意最大的数据库大小。
编辑:我真的不明白为什么这个答案被否决了。我已经多次使用MS访问dbs与Delphi,它运行良好。它当然不适用于繁重的多用户安装,并且它不是最快的,但这不是问题的要求。
答案 13 :(得分:0)
DBISAM和Elevate很棒。
答案 14 :(得分:0)
我的另一个选择是Dbase IV,V格式,具有全多用户支持自动编辑刷新功能。 我从www.softsci.com推荐了Topaz
我将它用于多用户和桌面应用程序。数据库永远不会崩溃并轻松处理数百万条记录。
Vitisan
答案 15 :(得分:0)
使用MySQL嵌入式(libmysqld.dll)非常简单方便。
但除非你有以下情况,否则你没有权利将libmysqld.dll重新发布到你的应用中:
答案 16 :(得分:0)
答案 17 :(得分:0)
如果NexusDB过于昂贵,你可以试试FlashFiler,这是一个用Delphi编写的免费开源数据库。我认为它是NexusDB的祖先。它自成为开源以来几乎没有任何维护,但它有很好的文档记录,可以满足您的所有要求。
FlashFiler是免费的,支持blob,非常大量的记录,索引和表。它可以嵌入单个可执行程序(不需要DLL),也可以作为多用户客户机 - 服务器数据库运行。它速度快,并提供SQL和记录级访问。有一些轻量级的内置加密,或者你可以添加自己的例程。
例如,我有一个程序,它嵌入为单用户数据库,可执行文件是3MB,它不需要任何DLL。这可以非常容易地访问50个总大小为15MB的表。 (我还使用FlashFiler和更大的客户端 - 服务器数据库。)