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

现在,我的第一个想法是 SQL Server 紧凑版. 。这确实集成得很好,但它不能脱离网络运行。

火鸟 似乎也有同样的问题,但 .net 集成似乎并不是真正一流的,并且很大程度上没有文档记录。

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

与 .net 配合良好的任何其他建议 无需实际安装服务器软件即可脱离网络运行?

有帮助吗?

解决方案

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

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

其他提示

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

免责声明:我是ADS研发组的一名工程师。我保证,它很震撼:)

听起来 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 方法与数据库交互。

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

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

using FirebirdSql.Data.FirebirdClient;

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

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

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

查看 维斯塔数据库. 。他们有一个非常好的产品,服务器版本(3.4)处于测试阶段并且非常接近发布。

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

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

为什么不使用 SQL Server 2005 Express 版?

这实际上取决于“嵌入式”的含义 - 但您可以将 SQLServer2005E 与您的应用程序一起重新分发,并且用户永远不必知道它的存在。

在应用程序中嵌入 SQL Server Express

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

我很困惑。

您需要一个嵌入式数据库 - 数据库本身存储在服务器上。这意味着将数据文件存储在网络共享上。然后你说 SQL Compact Edition 不起作用......但如果有人看一下这份文件:

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

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

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

还有 瓦伦蒂娜. 。当我从事一些 Real Basic 项目时,我发现了这个产品。RB版本非常好。

您考虑过 OODB 吗?从我推荐的各种开源替代方案中 数据库4o (抱歉自我推销:))它可以嵌入或在客户端/服务器模式下运行。

最好的

阿德里亚诺

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top