C#最小SQL数据库


12

我正在做一个小项目(而不是生产项目),在这里我需要存储足够的数据,以至于像CSV这样的处理效率低下,而SQL / MySQL服务器则太多了。.Net是否有任何方法可以有效地存储多个数据条目,并且具有查询的能力,而无需管理和连接到服务器,而只需加载和处理单个文件。


如果您已经启动了数据库服务器并且正在运行,则在该服务器上运行另一个数据库将非常简单。如果仅使用数据,则可以考虑使用Access。
2013年

@Brad这只是一个个人项目,我目前不在家里运行任何数据库服务器。您对Access的建议也许正是我在寻找的东西。
David

4
不是Access的粉丝,但是有时我会为它提供正确的解决方案。您是否考虑过对象序列化?只需创建一个对象并将其写入文件即可。(对象可能是List<foo>
Dan Pichelman

您是要这些持久化还是只需要保留在内存中?
理查德

1
@David:4000个条目-这么少?为什么不将它们全部保留在内存中?如果您只需要一个内存数据库来进行一些查询,而没有任何管理工具,那么具有一些数据表(持久化到文件中)的数据集可能就足以满足您的需求。
布朗

Answers:


15

有几种选择,没有特别的顺序:

  1. (收费的)Visual Studio的所有版本都装有SQL Server Express。您可以使用它。
  2. (糟糕)XML文件
  3. SQL Server CE(基本上是通过文件的本地SQL)
  4. SQLite的

此处提供更多想法:https//stackoverflow.com/questions/3639846/what-is-a-good-embedded-database-to-use-with-c


我真的想要完全独立地包含在单个可执行文件中的东西,没有DLL,也没有第三方软件。除XML以外,以上任何一种方法都能满足这些需求吗?
David

您可以将dll嵌入可执行文件中。
Sklivvz

好吧,我想最重要的部分是没有第三方*适合诸如MSSQL / MySQL之类的服务,#3或#4可以满足要求
David

我不记得SQL CE是否具有单独的运行时。SQLite没有,但是设置.NET项目可能会有些棘手。
GalacticCowboy

3
我要补充一点,LocalDB是一个选项。看到这个答案:stackoverflow.com/questions/9655362/…–
Andy


3

SQLite将是您的最佳选择。
如他们网站上所写:

SQLite是一个软件库,可实现自包含,无服务器,零配置的事务型SQL数据库引擎。

似乎真的是您要找的东西!

如果您懒得自己下载和安装,甚至还有Chocolatey软件包


2

ADO.NET可以序列化为XML,并具有RDBMS的几乎所有功能。(好吧,便宜的吧。)

我知道它“旧”了,现在看不起,但是ADO.NET确实可以很好地用于您所描述的内容。它甚至可以很好地跟踪未提交的更改。

它可能是“旧的”,但肯定不是“烧伤的”。但是,它的内存占用量非常大,因此您可以致电查询。4000条记录不会成为问题。


您能否详细说明“大量内存占用”?
David

@David-这意味着整个数据集将保存在内存中,而不仅仅是您从查询返回的记录。如果您有一个包含400万条记录的数据库,则将其全部保存在ADO.NET数据集中将严重消耗资源,而“ Real” RDBMS会将其保留在磁盘上,直到您查询了它们的一个子集为止。4000条记录对内存使用量来说是个小小的喷嚏,所以我不用担心。
Wesley Long

+1,我认为这是最好的选择,对于这种要求,即使是很小的事情(如SQLlite)似乎也需要很多努力。
布朗
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.