用其他可移植数据库和接口替换Microsoft Access

时间:2011-05-23 17:41:55

标签: database sqlite ms-access

我们公司即将升级所有工作计算机,不再支持MS Access。不幸的是,许多重要的数据库存储在具有许多不同类型接口的多种Access数据库中。将它全部存储在数据库服务器上是不可能的。我可以使用什么样的便携式(非服务器)数据库系统?

我倾向于的是SQLite,但我也希望能够编写接口来查询数据。如果我使用SQLite,那么编写一个可以在很多Windows机器上工作的查询接口的好方法是什么?

编辑:数据迁移不会成为问题。我更担心界面迁移。为这些便携式数据库系统之一编写查询接口的好方法是什么?

EDIT2:似乎对“查询界面”的含义有些疑惑。我不需要一个完整的查询系统。我只是想创建一个简单的前端,通过它我可以按表和字段搜索数据库。

5 个答案:

答案 0 :(得分:7)

根据您的问题的标题判断,您担心应该使用什么数据库(即数据容器)来代替Microsoft Access。但是,查看您的问题以及随后的答案和评论,您更关心的是实际使用什么来设计应用程序/用户界面,您所称的“查询界面”。

以下是您需要了解的一些事项:

1)SELECT查询允许您从数据库中提取数据。但是,数据必须以某种方式进入数据库。您没有指定您所谓的“查询接口”是否也用于数据输入。如果它实际上用于数据输入,我怀疑它是,那么你应该关注你如何设计你的“应用程序”,而不是你的“查询界面”。数据输入通常需要在数据库之外定义的一定量的指导和逻辑。该逻辑包括(但不限于)诸如验证规则,输入掩码,由GUI设计强制执行的父子关系之类的事物。这本质上是一个应用程序,而不仅仅是一个“查询接口”。应用程序通常旨在使数据输入比使用户直接将数据输入表中更容易。但即使在这里,您也必须意识到,如果没有某种类型的应用程序GUI,用户甚至无法将数据直接输入到表中,无论该GUI是否是您设计的。

2)Microsoft Access是一种快速应用程序开发(RAD)工具,可让您快速轻松地设计和保存查询,表单和报表。在我看来,你真正的问题是,我可以使用除Microsoft Access之外的哪些RAD工具来开发查询和表单,以便在小型桌面数据库中查看和输入数据?您建议我们使用哪种数据库与您推荐的RAD工具一起使用?

假设我已经正确定义了您的实际问题,请允许我就此问题提出自己的观点。首先,正如在另一个答案中已经指出的那样,只要客户端运行MS Windows,您就不需要放弃使用Access / Jet / ACC作为数据库(数据容器,持有表)。只要安装了MDAC,Access数据库就应该是“机器可读的”。

在我看来,更重要的问题是你应该用什么RAD工具代替Microsoft Access?在你回答这个问题后,或许它会帮助你回答第一个问题,即应该使用什么数据库。回答这个问题,说实话。虽然Microsoft Access有它的缺点,但您可能找不到任何其他RAD工具,它可以让您轻松创建用于数据输入的表单。 FileMaker Pro是我所知道的唯一竞争产品之一。

是的,您可以使用Visual Studio .Net来创建.exe运行时。这些运行时可以包括用于查看和输入数据以及报告的表单。我认为你会发现学习曲线非常重要,特别是如果你还不熟悉与DAO或ADO Classic非常不同的ADO.Net。如果您想为用户提供创建自己的查询/过滤器或报告的方法,则必须将此功能设计到GUI中,因为Visual Studio不会为您提供Microsoft Access中的简单向导和设计工具。虽然Visual Studio比MS Access强大得多,但您需要意识到即使是最简单的应用程序的开发时间也可能要高得多,尤其是在您第一次学习时。

您可以使用其他任何RAD工具吗?我对这里列出的不同设计工具几乎一无所知,但这可能是您开始的好地方:http://en.wikipedia.org/wiki/List_of_rapid_application_development_tools#Desktop_Rapid_Application_Development_Tools

答案 1 :(得分:1)

另一种解决方案,取决于您对这些数据库的操作,将是Microsoft SQL Server Compact Edition,它不需要安装程序。

无论您选择哪种数据库,您都将面临将查询迁移到SQL语言的不同方言(查询的实际语法)。他们都有他们的怪癖和特征(和缺少的功能)。这只是野兽的本质。应该注意的是,您仍然可以在代码中访问MS Access数据库,而无需安装MS Access。


似乎问题的性质自最初发布以来发生了巨大变化。问题显然已经变成一个关于找到具有与Access类似功能的用户界面开发环境的问题。这显然是一个完全不同的问题,而不是作为数据库引擎找到Access的替代品(或者特别是针对观众中的肛门保持者的Jet)。

有很多替代方案,这在很大程度上取决于您是希望继续使用Windows应用程序还是希望转移到基于浏览器的界面。鉴于各种评论,听起来您可能仍然需要基于Windows的解决方案。您可能会调查几个解决方案:

  1. .NET Windows Forms - .NET环境非常强大,可以提供非常快速的开发。 IMO,如果您知道自己在做什么并且功能更强大,就像Access一样快。但是,这些附加功能带来了额外的复杂性。毫无疑问,从纯粹的Access开发中跳入Windows窗体将是令人生畏的,但也是有益的。

  2. 另一个解决方案,我承认自己没有经过测试,但看起来很有希望的是Kexi + SQLite,它可以作为Access的开源替代品。

  3. 如果您考虑更换齿轮并切换到基于浏览器的方法,那么还有很多选择。 PHP,ASP.NET(MVC和非),Ruby等。与Windows Forms一样,从Access开发切换到基于浏览器的开发将是一项艰巨的改变,但也是有益的。

答案 2 :(得分:1)

SQLite是一个很好的选择,它将扩展到Windows以外的许多平台(iOS,OSX,Android等)。我推荐这个。如果您想继续使用Microsoft产品,SQL Server Express或Compact Edition是另一种可能性。

答案 3 :(得分:1)

当然,如果PHB正在消除Access作为削减成本的动作,您可以将现有的Access数据库拆分为前端/后端应用程序,将后端迁移到SQL Server Express版本(免费)并让用户使用MS Access运行时(也是免费的)您,开发人员,是唯一真正需要付费完整版Access的人。

此问题在问题发布后很久就出现了问题 - 但Google仍然将其提升到接近结果的顶部,以替换ms访问'

答案 4 :(得分:0)

您应该在可能的替换列表中包含MySQL和PostgreSQL。 MySQL支持AUTO_INCREMENT列,因此它可能是Microsoft数据库的更好替代品。此外,Microsoft SQL Server Express可能不是一个糟糕的选择。当我在大约10 - 12年前使用Microsoft技术时,我从使用MS Access数据库迁移到我的应用程序中使用MS SQL Server Express。