9

我正在制作这个小型实用程序(Windows 窗体),它需要将一些数据保存到磁盘上。在数据库术语中,它大约是一个表,不超过几千行,每行的大小小于 1KB。

你会用什么?

补充:忘了说 - 如果整个程序只是一个 .EXE 文件(当然还有数据文件),那就太好了。因此,我更喜欢在.NET 中构建的东西。

4

14 回答 14

23

SQLite .它很小,并且有很好的 .Net包装器。

于 2009-10-16T13:36:07.600 回答
10

或者是存在于每个 Windows 副本中的内置数据库 Esent。在这里阅读:http: //ayende.com/Blog/archive/2008/12/23/hidden-windows-gems-extensible-storage-engine.aspx

如果你觉得勇敢,我已经整理了一个简单的文档 db PieDb(如“easy as”)。

于 2009-10-16T13:40:25.047 回答
8

您可以使用 SQL Server Compact Edition(随 Visual Studio 提供)或SQLite

还有很多其他的,但这些是最常见的。

我是 SQLite 的忠实粉丝,因为它小巧、简单且快速。它有一个很棒的ADO.NET 提供程序,它支持实体框架。

于 2009-10-16T13:36:20.557 回答
4

如果您说的是单个表,我不太明白为什么您觉得必须使用关系数据库来实现目标。单个文件呢?

自然,根据您需要存储信息的原因以及数据相关的方式,您可能有需要 db.xml 的原因。但是您应该考虑在这种情况下数据库是否真的是您所需要的。

关系数据库不应该成为存储数据的事实标准。在选择 RDBMS 之前,您应该考虑许多备选方案。

例如,参见 mcintyre321 的帖子。

于 2009-10-16T13:56:29.120 回答
3

如果您打算使用嵌入式数据库,那么 SQL Server Compact Edition 可能是您最好的选择,紧随其后的是 SQLite。

如果您说的是一张桌子,那么听起来嵌入式数据库可能有点过头了,一个简单的文本文件可能会更好地为您服务。

于 2009-10-16T13:39:23.483 回答
3

您可以创建一个类的数组,将其标记为 [Serializable],然后使用内置的序列化/反序列化方法进行持久化。

于 2009-10-16T14:54:23.053 回答
2

我支持 SQLite 的投票。SQL Server CE 对于任何嵌入式用途来说都太重了,除非您需要与中央数据库轻松同步——那真是太棒了。

于 2009-10-16T13:41:10.710 回答
1

SQLite 的 .NET 端口位于http://code.google.com/p/csharp-sqlite/。它是纯 .NET,因此您可以将 ILMerge 合并为单个 .exe

于 2009-10-16T13:38:31.417 回答
1

对于那么小而简单的事情,我可能会使用 XML 而不是使用数据库。如果您抽象 CRUD 代码,您可以稍后修改代码的数据层部分,以便在数据大小和复杂性增长时使用数据库。

于 2009-10-16T13:56:39.520 回答
1

一旦我调查了同样的问题。在所有可能的候选人中,有两个看起来不错。它们是 SQLite 和 Firebird (firebirdsql.org)。但是 firebird 比 SQLite 有更多的功能。

UPD:这里有一个关于 firebird+dotnet 的有趣信息http://www.firebirdsql.org/dotnetfirebird/embedded/index.html

于 2009-10-16T15:47:43.917 回答
1

Berkeley DB也是嵌入式数据库的不错选择。还有一个为它提供 .NET 2.0 接口的库。

于 2009-12-15T15:57:02.903 回答
0

如果它不必是与 SQL 兼容的数据库,那么我也会看看 Db4o。Db4o 是用于 Java 和 .NET 的对象数据库。.NET 版本完全用 C# 编写。

于 2009-10-16T14:24:14.317 回答
0

我第二个 SQL Lite 或一个简单的 XML 文件,带有 deflate writer 以最小化大小。快速而且没有那么脏。

于 2009-10-16T18:08:27.920 回答
0

试试这个:https ://github.com/mdsoftware/mData 。没有第 3 方,包括所有来源,还包括一些不错的东西,如类似 Lisp 的数据处理和表达式编译器。我试图做一些非常简单但实用的东西。

于 2013-05-20T12:14:19.343 回答