39

我一直在(现在仍然)在寻找要在 .net (c#) 应用程序中使用的嵌入式数据库。警告:应用程序(或至少数据库)存储在网络驱动器上,但一次只能由 1 个用户使用。

现在,我的第一个想法是SQL Server Compact edition。这确实很好地集成了,但它不能脱离网络运行。

Firebird似乎也有同样的问题,但 .net 集成似乎并不是真正的一流,而且基本上没有记录。

Blackfish SQL看起来很有趣,但没有 .net 版本的试用版。定价也还可以。

有什么其他的建议可以很好地与 .net 配合使用并且在不需要实际安装服务器软件的情况下在网络上运行?

4

11 回答 11

26

在阅读您的问题时,我想到了SQLite ,我很确定如果您一次只限制 1 个用户,则可以从网络驱动器访问它。

.NET 上的 SQLite - 在 3 分钟内启动并运行

于 2008-08-03T14:48:52.497 回答
10

我推荐 Advantage Database Server (www.advantagedatabase.com)。它是一个成熟的嵌入式数据库,具有强大的支持,并且可以从许多开发语言(除了 .NET)访问。“本地”版本是免费的,以 DLL 的形式在您的应用程序中运行,不需要在服务器/网络共享上安装,并且支持所有主要的数据库功能。您可以将数据库和/或应用程序文件全部存储在网络上;它不关心数据在哪里。

免责声明:我是 ADS 研发组的工程师。我保证,它摇滚:)

于 2008-10-21T19:20:27.840 回答
9

听起来 ADO/Access 非常适合您的需求。它已融入 MS 堆栈、经验丰富且多用户。

您可以像这样以编程方式创建数据库:

Dim catalog as New ADOX.Catalog
Catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\server\path\to\db.mdb")

然后,您可以使用标准 ADO.NET 方法与数据库进行交互。

于 2008-08-03T15:48:43.657 回答
9

您可以使用嵌入的 firebird,它只是一个 dll,您需要随应用一起提供。

关于未记录的事情,这不是真的,firebird .NET 驱动程序实现了 ADO 接口,所以如果你知道 ADO,你可以使用 Firebird,基本上你将使用 FBConnection 等代替 SQLConnection,但我的建议是编写一个数据访问层并仅在代码上使用接口,如下所示:

using FirebirdSql.Data.FirebirdClient;

public static IDbConnection MyConnection()
{
    FbConnection cn = new FbConnection("...");
    return cn;
}

这个例子非常简单,但您不需要更多。

我们在所有应用程序中都使用 firebird,没有任何问题,您至少应该尝试一下。

于 2008-08-09T12:51:41.973 回答
8

查看VistaDB。他们有一个非常好的产品,服务器版本(3.4)是 Beta 并且非常接近发布。

于 2008-08-03T14:57:18.907 回答
7

这里的帖子有点晚了。而且已经提到了VistaDB,但我想指出,VistaDB 是 100% 托管的(因为您的帖子被标记为 .net)。它可以从共享网络驱动器运行,并且部署了 1MB xcopy。

既然你提到了 SQL CE,我们还支持 T-SQL 语法和数据类型(实际上比 SQL CE 更多),并具有可更新的视图、TSQL Procs 和 SQL CE 中缺少的其他东西。

于 2009-04-22T21:01:35.847 回答
5

为什么不使用SQL Server 2005 Express 版

这实际上取决于您所说的“嵌入式”是什么意思——但是您可以将 SQLServer2005E 与您的应用程序一起重新分发,而用户永远不必知道它的存在。

在应用程序中嵌入 SQL Server Express

将 SQL Server Express 嵌入到自定义应用程序中

于 2008-08-03T15:34:17.523 回答
4

我很困惑。

您需要一个嵌入式数据库 - 数据库本身存储在服务器上。这意味着将数据文件存储在网络共享上。然后您说 SQL Compact Edition 将无法工作……除非您查看此文档:

Word 文档:
在 SQL Server 2005 Compact Edition 和 SQL Server 2005 Express Edition 之间进行选择

在第 8 页上,“网络共享上的数据文件存储”旁边有一个漂亮的绿色大勾号。

所以在我看来,你的第一个想法是正确的。

于 2009-04-22T21:18:38.643 回答
2

还有瓦伦蒂娜。当我在做一些 Real Basic 项目时,我偶然发现了这个产品。RB版非常好。

于 2008-08-10T02:55:20.930 回答
2

你考虑过OODB吗?从各种开源替代方案中,我推荐db4o(对不起,自我推销:)),它可以在嵌入式或客户端/服务器模式下运行。

最好的

阿德里亚诺

于 2010-05-16T15:18:27.793 回答
0

这个问题现在很古老,而且发生了很多变化。对于我的特定目的,LiteDB是首选。它是开源的,并且有一个GitHub Repository

Apart from that, SQLite is basically the industry standard for embedded databases. There are attempts to port the code to .NET, but the prime use case involves a native library (e.g., the sqlite Nuget package) and/or a .NET P/Invoke wrapper like Microsoft.Data.SQLite.

于 2020-06-18T20:44:01.777 回答