在.NET中,有哪些快速嵌入式数据库的选项?

9
我正在制作一个小型实用程序(Windows Forms),需要将一些数据保存到磁盘中。在数据库术语中,这大约相当于一个表格,不超过几千行,每行大小不到1KB。
你会使用什么呢?
补充:忘了说 - 如果整个程序只有一个.EXE文件(加上数据文件),那就太好了。因此,我更喜欢使用.NET内置的东西。
14个回答

23

对于SQLite包装器的额外注意事项是,它支持LINQ。 - Dillie-O
他应该很久以前就接受了这里的答案!:)虽然我选择了一个简单的XML文件,但我会接受这个答案,因为它是最好的嵌入式全功能关系型数据库之一。 - Vilx-

10

8
你可以使用Visual Studio提供的SQL Server Compact Edition或SQLite
还有很多其他选择,但这些是最常见的。
我非常喜欢SQLite,因为它小巧、简单且快速。它有一个很棒的ADO.NET提供程序,支持实体框架。

4
如果你只需要处理单个表格,我不明白为什么你一定要使用关系型数据库来实现目标。有没有考虑使用单个文件呢?当然,根据你需要存储信息的原因和数据相关性的方式,你确实可能需要使用数据库。但是在这种情况下,你应该考虑是否真正需要一个数据库。
关系型数据库不应该成为存储数据的必选标准。在选择关系型数据库之前,你应该考虑许多其他替代方案。例如,可以看看mcintyre321的帖子。

有趣的是,人们看到“DB”这个词,立刻就会被锁定在思考DBMS上。我是否在任何地方说过我想要一个完整的DBMS?事实上,我更多地考虑了平面文件解决方案、XML序列化等。我只是想知道其他人会怎么做,为什么选择或不选择某些解决方案。+1 - Vilx-
我很好奇最快的平面文件格式和查询它的库是什么。最常见的问题是,在没有幕后引擎生成索引的情况下搜索平面文件时,您无法获得索引的好处。 - Steve Wortham
那将接近于嵌入式数据库管理系统。平面文件之所以是平面的,是因为它们没有索引。在我看来。 - Vilx-
由于您没有具体说明将有多少记录参与,因此很难对您应该做什么进行评论。您可能不会查询文件,而是将其加载到内存中并在那里处理它,然后将其刷新到文件中。或者至少对于小事情,这就是我会做的事情。对于设置等内容,有很好的替代方案,例如使用XML文件甚至是旧的经过验证的ini文件格式 :-) - user191152
嗯,我想我的意思是在某个点上需要进行权衡。如果你正在处理约1000条记录组成的约100KB数据,那么我认为像XML文件这样的东西就足够了,因为它不需要任何额外的组件。但如果你正在处理大量数据,那么一个平面文件将会查询缓慢且效率低下。这时候就需要像SQLlite这样的东西更加合适。 - Steve Wortham

3

如果您坚持使用嵌入式数据库,那么SQL Server Compact Edition可能是您的最佳选择,其次是SQLite。

如果只涉及一张表,使用嵌入式数据库可能有些过度,您可以考虑使用简单的文本文件来更好地满足需求。


3

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


2

我赞成使用SQLite。SQL Server CE对于嵌入式设备来说过于沉重,除非你需要与中央数据库进行轻松同步-那时它非常好。


1

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


1

1
对于如此小而简单的东西,我可能会选择使用XML而不是使用数据库。如果你抽象出CRUD代码,以后可以修改数据层代码,使其在数据增长和复杂性增加时使用数据库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接