可以脱离网络运行的 .net 嵌入式数据库
-
08-06-2019 - |
题
我曾经(现在仍然)正在寻找一个可在 .net (c#) 应用程序中使用的嵌入式数据库。警告:应用程序(或至少数据库)存储在网络驱动器上,但一次只能由 1 个用户使用。
现在,我的第一个想法是 SQL Server 紧凑版. 。这确实集成得很好,但它不能脱离网络运行。
火鸟 似乎也有同样的问题,但 .net 集成似乎并不是真正一流的,并且很大程度上没有文档记录。
黑鱼SQL 看起来很有趣,但是没有.net版本的试用。定价也还可以。
与 .net 配合良好的任何其他建议 和 无需实际安装服务器软件即可脱离网络运行?
解决方案
SQLite 在阅读你的问题时我想到了,我很确定可以从网络驱动器访问它 如果 您一次只能限制 1 个用户。
其他提示
我推荐 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 Compact Edition 不起作用......但如果有人看一下这份文件:
文字文档:
在 SQL Server 2005 Compact Edition 和 SQL Server 2005 Express Edition 之间进行选择
在第 8 页,“网络共享上的数据文件存储”旁边有一个漂亮的绿色大勾号。
所以在我看来你的第一个想法是正确的。
还有 瓦伦蒂娜. 。当我从事一些 Real Basic 项目时,我发现了这个产品。RB版本非常好。