我(并且仍在)寻找在.net(c#)应用程序中使用的嵌入式数据库。警告:应用程序(或至少数据库)存储在网络驱动器上,但一次只能由1个用户使用。
现在,我的第一个想法是SQL Server Compact edition。这真的很好地融合了,但它无法在网络上运行。
Firebird似乎有同样的问题,但.net集成似乎并不是真正的一流,并且很大程度上没有文档。
Blackfish SQL看起来很有趣,但没有对.net版本的试用。定价也没关系。
对.net 和运行良好的其他任何建议都可以在网络上运行而无需实际安装服务器软件?
答案 0 :(得分:24)
SQLite出现在我的脑海中,我很确定可以通过网络驱动器访问它如果你让自己受到1个用户的限制一次。
答案 1 :(得分:10)
我建议使用Advantage Database Server(www.advantagedatabase.com)。它是一个成熟的嵌入式数据库,具有很强的支持,除了.NET之外还可以从许多开发语言中访问。 “本地”版本是免费的,在您的应用程序中以DLL的形式运行,不需要在服务器/网络共享上安装,并支持所有主要的数据库功能。您可以将所有数据库和/或应用程序文件存储在网络上;它并不关心数据的位置。
免责声明:我是ADS R& D小组的工程师。我保证,它摇滚:)
答案 2 :(得分:9)
听起来ADO / Access非常适合您的需求。它融入了MS堆栈,经验丰富,多用户。
您可以以编程方式创建一个DB,如下所示:
Dim catalog as New ADOX.Catalog
Catalog.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\server\path\to\db.mdb")
然后,您可以使用标准ADO.NET方法与数据库进行交互。
答案 3 :(得分:9)
你可以使用firebird embeded,它只是你需要随app附带的dll。
关于未记录的事情,事实并非如此,firebird .NET驱动程序实现了ADO接口,所以如果你知道ADO你可以使用Firebird,基本上代替SQLConnection你将使用FBConnection等,但我的建议是编写数据访问层并在代码上使用接口,如下所示:
using FirebirdSql.Data.FirebirdClient;
public static IDbConnection MyConnection()
{
FbConnection cn = new FbConnection("...");
return cn;
}
这个例子非常简单,但你不需要更多。
我们在没有任何问题的情况下为我们的所有应用程序使用firebird,你至少应该尝试一下。
答案 4 :(得分:7)
结帐VistaDB。他们有一个非常好的产品,服务器版本(3.4)处于测试阶段并且非常接近发布。
答案 5 :(得分:7)
这里的帖子有点晚了.. VistaDB已经提到了,但我想指出VistaDB是100%管理的(因为你的帖子被标记为.net)。它可以从共享网络驱动器运行,并且部署了1MB xcopy。
由于您提到SQL CE,我们还支持T-SQL语法和数据类型(实际上不仅仅是SQL CE),并且具有可更新的视图,TSQL过程以及SQL CE中缺少的其他内容。
答案 6 :(得分:5)
为什么不使用SQL Server 2005 Express edition?
这实际上取决于“嵌入式”的含义 - 但是您可以使用您的应用程序重新分发SQLServer2005E,用户永远不必了解它。
答案 7 :(得分:4)
我很困惑。
您要求嵌入数据库 - 数据库本身存储在服务器上。转换为将数据文件存储在网络共享上。然后你说SQL Compact Edition不起作用......除非你看一下这个文档:
Word文档:
Choosing Between SQL Server 2005 Compact Edition and SQL Server 2005 Express Edition
在第8页上,“网络共享上的数据文件存储”旁边有一个很好的绿色勾号。
所以在我看来,你的第一个想法是正确的。
答案 8 :(得分:2)
还有Valentina。当我在处理一些Real Basic项目时,我会看到这个产品。 RB版本非常好。
答案 9 :(得分:2)
答案 10 :(得分:0)
这个问题现在很古老了,已经发生了很多变化。对于我的特定目的,LiteDB是选择的选项。它是开源的,具有GitHub Repository。
除此之外,SQLite基本上是嵌入式数据库的行业标准。有尝试将代码移植到.NET,但主要用例涉及本机库(例如sqlite Nuget package)和/或.NET P / Invoke包装器,例如Microsoft.Data.SQLite。