代码之家  ›  专栏  ›  技术社区  ›  aggietech

不使用数据库存储/检索桌面数据的最佳方法是什么?

  •  5
  • aggietech  · 技术社区  · 16 年前

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

    5 回复  |  直到 16 年前
        1
  •  4
  •   Ignacio Vazquez-Abrams    16 年前

    SQLite 做得很好,就像一个嵌入式数据库。即使有 .NET/Mono bindings 可用。

        2
  •  2
  •   Shane Fulmer Lasse V. Karlsen    16 年前

    你可以调查一下 SQL Server Compact Edition .

        3
  •  1
  •   Michael    16 年前

    在回答你的问题时,你会问各种各样的问题。为了回答这个问题,我假设:

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

    最方便的内置(基本.NET安装的固有)是一个数据集——特别是一个类型化的数据集。

    您可以向数据集添加不确定数量的表和数据(受可用内存限制),并轻松地从磁盘保存和加载数据。数据集很容易序列化为绑定到架构的XML数据。

        4
  •  1
  •   S.Robins    16 年前

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

    当你说你不能有一个数据库时,我假设你的意思是应用程序需要是独立的,但是可以使用一个本地数据库文件?如果是这样,并且您估计需要大量的数据存储,那么您可能会发现您想要使用许多紧凑的本地数据库产品之一。例如,sqlite和innodb就出现了。

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

    至于效率和有效性,这都取决于您决定如何执行数据访问。当然,您使用的数据库类型会产生影响,但是您还必须支持您实现的任何类型的数据库,因此您需要了解数据库API是如何定义和记录的,它是否有一个活动的支持社区等等,并选择一个您认为最适合使用的社区。

        5
  •  1
  •   Laurion Burchall    16 年前

    如果您在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字典,但由磁盘上的数据库文件支持。