【问题标题】:What's the best way to store/retrieve data for a desktop without using a database?在不使用数据库的情况下存储/检索桌面数据的最佳方法是什么?
【发布时间】:2011-01-15 13:59:24
【问题描述】:

我有一个关于为桌面应用程序存储数据的问题, 如果我要部署没有 MS SQL 数据库的应用程序, 我怎样才能促进数据的检索/存储。 我知道我也可以将数据对象序列化成一个文件(如XML文件),有没有其他更有效或有效的方法?

【问题讨论】:

    标签: c# database desktop-application


    【解决方案1】:

    SQLite 作为嵌入式数据库做得很好。甚至有.NET/Mono bindings 可用。

    【讨论】:

      【解决方案2】:

      您可以查看SQL Server Compact Edition

      【讨论】:

        【解决方案3】:

        为了回答您的问题,人们会提出各种各样的问题。出于此答案的目的,我将假设:

        1) 需要存储的数据量有限。 2) 内置功能(无需第三方或数据库)。

        最方便的内置(基本 .NET 安装固有)是 DataSet - 具体来说,是类型化的 DataSet。

        您可以向 DataSet 添加无限数量的表和数据(受可用内存限制),并轻松地从磁盘保存和加载数据。 DataSet 可以轻松序列化为模式绑定的 Xml 数据。

        【讨论】:

        • @Michael,是的,数据量有限,但如果可能的话,我想绕过序列化/XML 路由。
        • 我知道您想将其保存为二进制文件吗?我想我想了解您希望如何将数据保存在文件系统上。
        【解决方案4】:

        我认为您不应该问哪种方法是“最好的”方式,但哪种方式对您来说是最好的。

        当您说您不能拥有数据库时,我假设您的意思是应用程序需要是独立的,但可以使用本地数据库文件?如果是这样,并且您估计将需要大量数据存储,那么您可能会发现您想使用许多紧凑型本地数据库产品中的一种。以 SQLite 和 InnoDB 为例。

        如果您只打算存储少量数据,那么 XML 或简单的二进制文件可能更适合您,因为它可以减少您的应用程序占用空间,并消除对第 3 方产品的依赖。我们有时(我很少强调!)仍然使用经典的 INI 文件,因为它在代码中得到很好的支持,并且代码非常紧凑。

        至于效率和有效性,这一切都取决于您决定如何实施数据访问。诚然,您使用的数据库类型会产生影响,但您还必须支持您实现的任何内容,因此有必要研究数据库 API 的定义和记录方式,是否有活跃的支持社区,等等...,然后选择你觉得最舒服的工作。

        【讨论】:

          【解决方案5】:

          如果您在 Windows 上并且需要以简单的方式查询数据,请考虑内置的 ESENT 数据库引擎 (http://blogs.msdn.com/windowssdk/archive/2008/10/23/esent-extensible-storage-engine-api-in-the-windows-sdk.aspx)。 CodePlex 有一个 .NET 包装器,其中包括一个 PersistentDictionary 类 (http://managedesent.codeplex.com/),其工作方式类似于 .NET 字典,但由磁盘上的数据库文件支持。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-10-20
            • 1970-01-01
            • 1970-01-01
            • 2020-04-08
            • 1970-01-01
            • 1970-01-01
            • 2018-03-03
            • 1970-01-01
            相关资源
            最近更新 更多