【问题标题】:What is the best database for a C# Desktop App? (NO NETWORKING) [closed]C# 桌面应用程序的最佳数据库是什么? (无网络)[关闭]
【发布时间】:2011-01-17 16:15:18
【问题描述】:

我应该使用什么?我需要存储数据,它只需要在本地机器上。我将存储所有字符串变量,并在许多列中。

什么是最好的?它甚至会是一个数据库吗?

【问题讨论】:

    标签: c# database


    【解决方案1】:

    我会推荐db4o,一个对象数据库引擎。它非常简单,客户端不需要服务器或安装。另一种选择是 SQLite。您可以获取 .NET 提供程序here

    编辑

    参见 db4o 教程here

    【讨论】:

    • +1 用于指出 db4o。它比其他的更简单和自然,因为您不需要处理连接和其他东西(只是对象)。
    • 这完全是在 C# 中完成的?
    • @Bloodyaugust - 是的。您可以在source.db4o.com/db4o/trunk/db4o.net查看源代码
    【解决方案2】:

    SQL Server Compact 3.5 SP1 不需要安装(您只需要提供 .dll,但如果允许,请检查 EULA)并且使用起来相当简单。

    【讨论】:

      【解决方案3】:

      我会推荐使用 sqlite,它是一个非常快速的仅文件、可嵌入、功能丰富的数据库。我有一个lightweight ORM with C# bindings,它抽象并简化了对它的访问。这是live web-service demo using sqlite

      哦,是的,db4o 也是一个不错的选择,我也有 C# database bindings,因为它支持 C# 自动属性(因为默认的 db4o 提供程序不支持)和其他常见的数据访问场景。

      【讨论】:

        【解决方案4】:

        如果您正在寻找 RDBMS 或类似 MongoDB 的东西,如果您正在存储对象或类似的东西,您应该查看 SQLite。

        【讨论】:

          【解决方案5】:

          为什么不使用 SQL Server Express?它甚至是免费的。

          【讨论】:

          • @Downvoter:有什么问题? SQL Server Express 不需要,甚至不需要网络。
          • 我没有对你投反对票,但有更简单的选项,不需要 84MB-500MB 下载和巨大的占用空间。当然,它提供了更强大的选项,但这个人只想保留一堆字符串。
          • 我错误地否决了您的答案;现在已经撤消了。
          • @Chris: 记录一下,84MB 只是数据库,172MB 用于管理工具,225MB 用于数据库和管理工具,515MB 用于一切,加上高级服务(全文搜索,报告服务)。此外,他谈论的是字符串,而是“一堆列”。
          • @John:正确,84MB 只是数据库的大小,但与 500K 和零安装的 SQLite 相比,您会看到巨大的差异。部署也变得非常容易,因为它可以只是复制和粘贴。而对于一堆列,SQLite 最多可以在一个表中处理 32767 列。
          【解决方案6】:

          我强烈建议您查看序列化框架。它甚至不接近数据库的性能,但是,如果你不是在谈论大量数据,它的开销大约减少了 100%。在 .net 中将对象序列化为文件是小菜一碟:

          XmlSerializer serializer = new XmlSerializer(typeof(myObjectType));
          
          using(FileStream stream = new FileStream("file", FileMode.Create, FileAccess.Write)
          {
             serializer.Serialize(stream, myObject);        
          }
          

          就是这样!

          回读几乎是相反的。 LINQ 提供了更多选项。同样,就性能而言,这甚至不接近数据库,但我已经看到很多很多实现,其中数据库对于存储的数据量来说是极端过度的。显然,如果您有明确的扩展需求等,您将需要为此进行计划。解决正确问题的正确工具等等。

          【讨论】:

          • 你会说也许 200 个对象有 10 个属性,每个对象对于序列化器来说是合理的吗?
          • 再说一次,这取决于你在做什么,但我认为这是合理的。好消息是(取决于您可以承受的“破坏性”更改)您总是可以切换到二进制序列化程序,它也有优点和缺点。二进制序列化程序的优点几乎完全与性能相关,而缺点则与类型更相关。我知道有人诋毁 XmlSerializer,但如果我能负担得起 b/c,我倾向于使用它,从长远来看,你通常会遇到更少的问题。另一件事 - 考虑使用属性而不是元素!
          【解决方案7】:

          如果您只是希望以相当简单的结构存储少量数据,并且不打算进行任何复杂的查询,那么请考虑使用 XML 文件。您不需要任何额外的软件,您可以使用LINQ to XML 轻松使用它。

          【讨论】:

            【解决方案8】:

            XML可以代替你的要求!

            【讨论】:

              【解决方案9】:

              如果您想要极快的速度,请查看memcache。但是它们不会写入硬盘驱动器,因此如果您想跨会话存储它们,您可能仍然需要其他提到的数据库。 在我的项目中,我们使用 mongodb 来缓冲数据,并使用 memcache 来缓冲 mongo。所以会先从memcache中取数据,如果找不到,试试mongo。如果仍然没有找到,我们就会得到新的数据。

              对于 windows 和 .net,请查看here

              【讨论】:

                猜你喜欢
                • 2011-02-13
                • 1970-01-01
                • 2013-05-16
                • 2010-09-13
                • 2013-03-24
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多