我正在制作这个小型实用程序(Windows 窗体),它需要将一些数据保存到磁盘上。在数据库术语中,它大约是一个表,不超过几千行,每行的大小小于 1KB。
你会用什么?
补充:忘了说 - 如果整个程序只是一个 .EXE 文件(当然还有数据文件),那就太好了。因此,我更喜欢在.NET 中构建的东西。
我正在制作这个小型实用程序(Windows 窗体),它需要将一些数据保存到磁盘上。在数据库术语中,它大约是一个表,不超过几千行,每行的大小小于 1KB。
你会用什么?
补充:忘了说 - 如果整个程序只是一个 .EXE 文件(当然还有数据文件),那就太好了。因此,我更喜欢在.NET 中构建的东西。
或者是存在于每个 Windows 副本中的内置数据库 Esent。在这里阅读:http: //ayende.com/Blog/archive/2008/12/23/hidden-windows-gems-extensible-storage-engine.aspx
如果你觉得勇敢,我已经整理了一个简单的文档 db PieDb(如“easy as”)。
您可以使用 SQL Server Compact Edition(随 Visual Studio 提供)或SQLite。
还有很多其他的,但这些是最常见的。
我是 SQLite 的忠实粉丝,因为它小巧、简单且快速。它有一个很棒的ADO.NET 提供程序,它支持实体框架。
如果您说的是单个表,我不太明白为什么您觉得必须使用关系数据库来实现目标。单个文件呢?
自然,根据您需要存储信息的原因以及数据相关的方式,您可能有需要 db.xml 的原因。但是您应该考虑在这种情况下数据库是否真的是您所需要的。
关系数据库不应该成为存储数据的事实标准。在选择 RDBMS 之前,您应该考虑许多备选方案。
例如,参见 mcintyre321 的帖子。
如果您打算使用嵌入式数据库,那么 SQL Server Compact Edition 可能是您最好的选择,紧随其后的是 SQLite。
如果您说的是一张桌子,那么听起来嵌入式数据库可能有点过头了,一个简单的文本文件可能会更好地为您服务。
您可以创建一个类的数组,将其标记为 [Serializable],然后使用内置的序列化/反序列化方法进行持久化。
我支持 SQLite 的投票。SQL Server CE 对于任何嵌入式用途来说都太重了,除非您需要与中央数据库轻松同步——那真是太棒了。
SQLite 的 .NET 端口位于http://code.google.com/p/csharp-sqlite/。它是纯 .NET,因此您可以将 ILMerge 合并为单个 .exe
对于那么小而简单的事情,我可能会使用 XML 而不是使用数据库。如果您抽象 CRUD 代码,您可以稍后修改代码的数据层部分,以便在数据大小和复杂性增长时使用数据库。
一旦我调查了同样的问题。在所有可能的候选人中,有两个看起来不错。它们是 SQLite 和 Firebird (firebirdsql.org)。但是 firebird 比 SQLite 有更多的功能。
UPD:这里有一个关于 firebird+dotnet 的有趣信息http://www.firebirdsql.org/dotnetfirebird/embedded/index.html
Berkeley DB也是嵌入式数据库的不错选择。还有一个为它提供 .NET 2.0 接口的库。
如果它不必是与 SQL 兼容的数据库,那么我也会看看 Db4o。Db4o 是用于 Java 和 .NET 的对象数据库。.NET 版本完全用 C# 编写。
我第二个 SQL Lite 或一个简单的 XML 文件,带有 deflate writer 以最小化大小。快速而且没有那么脏。
试试这个:https ://github.com/mdsoftware/mData 。没有第 3 方,包括所有来源,还包括一些不错的东西,如类似 Lisp 的数据处理和表达式编译器。我试图做一些非常简单但实用的东西。