可以在网络上运行的.net嵌入式数据库
我曾经(现在还在)正在寻找要在.net(c#)应用程序中使用的嵌入式数据库。注意事项:应用程序(或者至少数据库)存储在网络驱动器上,但一次只能由1个用户使用。
现在,我的第一个想法是SQL Server Compact版本。确实很好地集成了它,但是它不能在网络上运行。
Firebird似乎有相同的问题,但是.net集成似乎并不是真正的一流产品,并且在很大程度上没有记录。
Blackfish SQL看起来很有趣,但是没有试用.net版本。定价还可以。
还有什么其他建议可以与.net很好地运行并且可以在不需要实际安装服务器软件的情况下在网络上运行?
解决方案:
在阅读问题时,我想到了SQLite,而且我很确定,如果我们一次只能限制1个用户,那么可以从网络驱动器访问它。
.NET上的SQLite在3分钟内启动并运行
查看VistaDB。他们有一个非常好的产品,服务器版本(3.4)是Beta版,非常接近发布。
为什么不使用SQL Server 2005 Express版?
它实际上取决于"嵌入式"的含义,但是我们可以将SQLServer2005E与应用程序一起重新分发,并且用户永远不必知道它的存在。
在应用程序中嵌入SQL Server Express
将SQL Server Express嵌入到自定义应用程序中
听起来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用于所有应用程序而没有任何问题,我们至少应该尝试一下。
还有瓦伦蒂娜。当我从事某些Real Basic项目时,会涉及到该产品。 RB版本非常好。
我建议使用Advantage Database Server(www.advantagedatabase.com)。它是一个成熟的嵌入式数据库,具有强大的支持,除了.NET之外,还可以从许多开发语言中进行访问。 "本地"版本是免费的,以DLL的形式在应用程序中运行,无需在服务器/网络共享上进行安装,并且支持所有主要的数据库功能。我们可以将DB和/或者应用程序文件全部存储在网络上。不在乎数据在哪里。
免责声明:我是ADS研发小组的工程师。我保证,它会摇晃:)
这里的帖子有点晚了。.已经提到了VistaDB,但是我想指出,VistaDB是100%受管的(因为帖子被标记为.net)。它可以从共享的网络驱动器运行,并且已部署1MB xcopy。
自我们提到SQL CE以来,我们还支持T-SQL语法和数据类型(实际上比SQL CE还要多),并且具有可更新的视图,TSQL Procs和SQL CE中缺少的其他内容。
我很困惑
我们需要一个嵌入式数据库,数据库本身存储在服务器上。转换为将数据文件存储在网络共享上。然后,我们说SQL Compact Edition不起作用...除非查看该文档,否则:
Word文档:
在SQL Server 2005 Compact Edition和SQL Server 2005 Express Edition之间进行选择
在第8页上,"网络共享上的数据文件存储"旁边有一个漂亮的绿色大勾号。
因此在我看来,第一个想法是正确的。
我们是否考虑过OODB?从各种开放源代码替代品中,我建议使用db4o(很抱歉,自我推广:)可以在嵌入式或者客户端/服务器模式下运行。
最好
阿德里亚诺

