3

我需要为在文件服务器上使用相同数据库的基于 Windows 的应用程序的多个同时用户选择数据库解决方案。

我需要一个可以存在于 Window OS 文件服务器上的数据库。

  1. 必须由在单个 MS Windows 机器(主要是 Windows 7)上运行的多个应用程序共享
  2. 由文件服务器提供。
  3. 无法使用数据库服务器/引擎(由于内部政治规则)或网页服务器。
  4. 更喜欢将 C# 用于一组 WPF 应用程序。
  5. 当前使用一组带有一组 MS Access 文件的 VB 应用程序 - 其中一个应用程序有问题,需要重新编写。
  6. 当前大约六个 *.mdb 文件(一些带有链接表)的集合大约是 400 MB。估计增长 10 到 20 MB/年。
  7. 目前最多有十几个并发用户在他们自己的 PC 上。不要期望在未来有太大的变化。
  8. 所有应用程序都向数据库读取和写入数据。
  9. 目前有几个(大约 4 人)在 Access 中编写临时查询 - 他们将继续需要能够以某种方式编写查询。
  10. 希望防止最终用户更改数据库结构(添加表/列)。
  11. 免费软件。

我知道的选择是:

  1. 访问 .mdb 文件(当前情况)。
  2. SQLite。
  3. SQL 服务器 CE。

是否有其他系统可能适合许多或所有所需特征?对于我正在考虑的系统,我应该了解哪些特定的“陷阱”?

4

1 回答 1

1

好吧,“不能使用数据库服务器/引擎”让事情变得更加困难。“免费”也是如此。

我认为 Access 是您列表中唯一接近满足所有要求的东西。它不是免费的,但似乎你已经拥有它,所以至少它不会额外收费。

Access本质上是三种不同的捆绑产品。

  • Jet 数据库引擎
  • 用于查询、表单和报告的 RAD 环境
  • VBA编程环境

如果您只使用数据库引擎,那么使用 SQL Server CE 进行一些测试是有意义的。

切换到 SQLite 可能需要对应用程序代码进行额外检查。SQLite 支持存储类,而不是数据类型。这意味着什么?这意味着 SQLite 允许这样做。

sqlite> create table foo (n integer);
sqlite> insert into foo values ('wibble');
sqlite> select n from foo;
wibble

HyperSQL是另一种可能性。仅支持 JDBC,可以在没有服务器组件的情况下运行。(文档并没有立即明确这一点。)我认为切换到这个需要比 SQL Server CE 做更多的工作。

另见H2火鸟

于 2012-08-19T01:08:20.523 回答