优秀免费的替代MS Access的选择

105
考虑在Microsoft平台上开发轻量级桌面数据库应用程序的需求。
使用MS Access可以很容易地完成,但我希望能够将其分发给其他人,并且不想支付运行时许可证费用。
需求:
- 易于向其他人分发 - 没有运行时许可问题
考虑因素和候选方案:
- OpenOffice套件中的Base。 我担心它的稳定性。 - MySQL+使用C ++或Python编写自定义数据库代码似乎是一种相当重-handed的解决方案。 问题: MS Access的低成本或免费数据库替代品有哪些?

参见:开源报表引擎



@Schnapple

Bruceatk提到了我的想法;我需要的不仅仅是DB引擎,还有Access带来的其他好处。比如漂亮的表单设计工具,优秀的报告引擎等等。但是你提出了一个很好的观点,就是安装占用空间的问题。我已经考虑过这个问题了,但是我还没有对此做出任何决定。无论如何,我可能会选择一些相对轻量级的东西,而小的安装占用空间肯定是一个优点。


@Remou,

我不知道Microsoft Access 2007运行时是免费的,感谢你指出来。上一次我调查它是相当昂贵的许可证,因为我想他们试图将其销售给企业IT部门。

还要感谢其他所有回答的人,你们指出的其他选项我完全不知道。


3
所选答案中提出的所有解决方案都关于后端(数据库本身)。分发Jet数据库从来没有任何成本!因此,这个问题有点令人困惑,不清楚pcampbell是在寻找前端、后端还是两者兼备。 - iDevlop
1
@Patrick Honorez,最初提出问题的不是pcampbell,而是我。我很久以前将其转换为社区Wiki,而pcampbell是最后一个编辑它的人。我想要包括后端、可视化查询和报告引擎的东西。后端很容易——可视化查询和报告引擎除了Access之外,我从未找到过其他更好的选择。 - Onorio Catenacci
我并没有发现Access不稳定,只要你有正确的JRE。还有Libre Office Base也可以尝试。虽然你可以从Access导入表格,并且你可能不指望能够在其中运行VBA,但你也无法导入表单。除此之外,OOBase是一个完全可行的数据库(至少适用于具有较轻要求的较小数据库)。 - CodeLurker
28个回答

128

当人们询问 Access 的替代品时,他们往往只考虑数据库,但实际上,他们真正想了解的是 Access 中的所有其他功能。他们通常不在意 Access 使用的数据库。

Access 提供的一些功能包括:表单、查询构建、报表、宏、数据库管理以及一些需要超越向导提供的内容的语言。

SQLite、MySQL 和 FireBird 是免费的数据库后端。它们没有内置 Access 的那些额外功能。任何免费的 Access 替代品都需要将 SQLite 等与开发语言组合使用。

可能最好的免费选择是使用SQLiteVisual Basic 2008 或 C# 2008 Express 版本。这会有很重的运行时依赖性,因此安装到裸机客户端可能需要相当长的时间。

实际上,没有任何免费的选项可以满足最低运行时要求而不使用 Access。我希望有这样的替代品存在。

如果有人知道任何好的替代品,请告诉我。


5
是的,人们没有意识到你所强调的作为一个集成开发环境的Access的强大力量。没有任何免费软件可以与Microsoft Access相比,即便是具备(更不用说全部)功能内置的软件。当你使用Access时,你可以在短时间内完成其他方式需要花费更多时间才能完成的许多事情。我完全同意你的答案@bruceatk。 - ihightower

69

2
我非常确定Access 2003运行时许可证不是免费的...但是...使用Access 2007,您无需支付许可证费用。 - Brett G

67

Schnapple问道:

您是指要将免费数据库与应用程序一起分发的概念,还是类似Access的“单个文件、无需安装”的数据库?

额,任何对Access应用程序开发有能力的人都不会将单个MDB/ACCDB作为应用程序/数据存储来分发。任何非平凡的Access应用程序都需要拆分成一个带有表单/查询/报告(即UI对象)的前端和一个后端(仅包含数据表)。

很明显,这里需要的是像Access这样的数据库应用程序开发工具。所有仅限于数据库的答案在任何方面都不能响应此要求。

请在回答Access问题之前先了解Access:

  • Access是一个带有默认数据库引擎Jet的数据库应用程序开发工具。

  • 但是,只要有针对该数据库引擎的ISAM、ODBC或OLEDB驱动程序,就可以构建适用于几乎所有后端数据库的Access应用程序。

微软本身已经很好地混淆了Access(开发工具)和Jet(数据库引擎)之间的区别,所以许多人不认识这种差异也就不足为奇了。但是开发人员应该使用精确的语言,当您指的是数据库引擎时,请使用“Jet”,而当您指的是前端开发平台时,请使用“Access”。


在技术上,David,在Access 2007及更高版本的文件中,它使用名为访问连接引擎(ACE)的Office特定版本的Jet - Bobort

65
请注意,MS Access产品不仅仅是原始数据库引擎。它提供了一个完整的应用程序开发平台,包括表单和菜单设计师、客户端应用程序语言和环境(VBA)以及报告设计师。当你把所有这些东西放在一起考虑时,MS Access确实没有对手。
但是对于这个问题的范围,我们关注原始数据库引擎。考虑到这一点: SQLlite, Firebird, VistaDB(非免费), SQL Server Compact Edition(不是Express)
现在还有SQL Server LocalDB。
另一个想法:虽然最初的问题确实询问桌面数据库,但很可能有些人会在这里寻找要在网站上使用的数据库。重要的是要记住,这些都是进程内数据库,因此很少适合在网站上使用。如果你想构建一个网站,在这种情况下通常需要支持大量并发访问,你通常需要一个数据库服务器引擎,例如MS SQL、Postgresql、MySQL、Oracle或它们的同类。同时,那些服务器引擎很少适合单用户桌面应用程序。

7
SQLite,我喜欢它。 - Alix Axel
为什么选择SQL Server Compact Edition而不是Express版本?这只是因为大小的原因吗? - Mark3308
@Mark - Express Edition仍然是一个服务器级别的数据库,而不是像其他数据库一样的进程内数据库。阅读答案的第二部分,关于服务器引擎的所有内容(包括最后一句话)都适用于Express Edition。 - Joel Coehoorn
好的,我没有意识到Compact Edition是一个进程数据库。谢谢你指出来。 - Mark3308
还要注意,您可以使用MySQL Workbench,快去看看吧... https://www.mysql.com/products/workbench/ - The Bumpaster
显示剩余2条评论

17
老实说,没有任何免费的替代MS Access的选择。至少如果你指的是数据库开发工具(表单、报告、查询、VBA支持等)。如果你把MS Access当作一个数据库引擎(实际上你是指MS Jet或ACE),那么是的 - 你有很多选择。有很多免费的数据库引擎 - 最流行的是MySQL和PostgreSQL。我可以推荐两者 - 这取决于你想做什么。
对于编写数据库前端,C++是最糟糕的选择之一。你应该考虑使用MS Visual C#、MS Visual Basic .NET或者...甚至Java/Swing(如果我们谈论的是桌面应用程序)。如果你考虑使用Web前端 - 请考虑PHP(与MySQL或PostgreSQL后端)或ASP.NET(与MSSQL Server后端)。
我强烈建议你不要使用C++来完成这项工作。这种语言非常高效和灵活,但使用C++进行高级数据库前端开发并不是最好的选择。C++在系统编程、游戏开发、数学和物理模拟以及任何需要效率的地方都非常出色,例如实时应用程序等。前端不必是速度的守护者 - 它们应该看起来漂亮,并且具有高级的终端用户功能(如排序、着色等)。如果你正在寻找免费工具 - 也许C# Express或Visual Basic.NET Express 2008是适当的选择?或者Java/Swing(检查NetBeans IDE)?也许SharpDevelop?但不是C++……把C++留给它最擅长的事情。

15

看看Suneido吧。

几年前,我用它作为实验制作了一个相当复杂的GIS应用程序(包括数据库、复杂的GUI、报告、客户机/服务器)。虽然有些文档问题,但整个体验很愉快,并且我非常快速地变得熟练。

我不再使用它,主要原因是:

  • 它不是真正的通用型
  • 它不跨平台(仅限Windows)
  • 我决定停止探索外来技术并专注于更为主流的领域。

10

在自由软件的替代方案中,以下几个尚未被提及:

我也会关注Flex/Air社区正在推出的数据库RAD工具,因为使用这些工具可以获得统一的桌面和Web界面。


1
Rekall似乎已经停止开发,而Glom则显得不够成熟且使用较少。我建议完全跳过客户端-服务器模式,选择像WaveMaker这样的Web 2.0技术。 - Robin Green
1
Glom似乎自2012年以来没有更新,因此现在可能已经死亡。 - WhatEvil

9

Oracle XE和Application Express。

  • 具有漂亮的基于Web的图形用户界面,
  • 是一个“真正”的数据库,
  • 可以扩展到超出单个桌面的规模,
  • 提供了明确的规模路径,超出了小团队的范围,
  • 应用程序作为基于Web的易于访问的方式提供。
  • 可以将Excel电子表格转换为应用程序。

7
问题是找到一个替代MS Access的方案,其中包括一个可视化的、拖放式的开发环境和一个“合理”的数据库,整个套件可以免费部署。我的第一个建议是查看这个非常完整的 MS Access替代方案列表(其中许多是免费的),然后再看一下osalt.com上的开源数据库开发工具列表。我的第二个建议是检查WaveMaker,它是云端的一种开源PowerBuilder(免责声明:我在那里工作,因此不应被视为一个不带偏见的信息来源;-))。WaveMaker将拖放式IDE与开源Java后端结合起来。它在Apache许可下获得许可,并拥有一个由15,000名开发人员组成的社区。

我发现在引用的URL上的评估对于Access的替代方案非常宽容。它们中没有一个真正接近复制Access的功能集。这并不意味着它们是任何项目的绝佳选择,只是它们不能取代Access所做的一切。我知道唯一接近的平台是FileMaker,但在脚本和数据连接方面相对较弱。 - David-W-Fenton
那是一个不错的链接 @C Keene。谢谢你分享它。 - Onorio Catenacci
我同意你的看法,@David Fenton - MS Access是一个非常成熟和功能齐全的产品。如果你想要一个能做到MS Access所能做到的所有事情的产品,那么MS Access就是唯一符合要求的产品。"正确的答案"取决于你愿意做出哪些特定的妥协(例如,有限的脚本或报告),以及你从新平台中获得了哪些其他好处(例如,开源、基于Java等)。 - C Keene

7
NuBuilder(www.nubuilder.net)可能是一个不错的选择。
NuBuilder 是一款使用 GPLv3 许可证的 PHP 网络应用程序,需要 MySQL 作为后端数据库。用户和程序员都使用网络界面。
他们将其推广为免费、基于 Web 的 MS Access 替代品。我正在创建我的第二个 NuBuilder 应用程序。NuBuilder 似乎在积极开发中,我发现它稳定且有良好的文档资料(只要你能接受视频教程)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接