在不使用数据库的情况下,为桌面存储/检索数据的最佳方法是什么?

时间:2010-02-11 04:27:23

标签: c# database desktop-application

我对存储桌面应用程序的数据有疑问, 如果我要部署没有MS SQL数据库的应用程序, 我怎么能方便检索/存储数据。 我知道我也可以将数据对象序列化为文件(例如XML文件),还有其他更有效或更有效的方法吗?

5 个答案:

答案 0 :(得分:4)

SQLite非常适合作为嵌入式数据库。即使有.NET/Mono bindings可用。

答案 1 :(得分:2)

您可以查看SQL Server Compact Edition

答案 2 :(得分:1)

有人会问一些问题来回答你的问题。出于这个答案的目的,我将假设:

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

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

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

答案 3 :(得分:1)

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

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

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

关于效率和有效性,所有这些都取决于您决定如何实施数据访问。当然,您使用的数据库类型会产生影响,但您还必须支持您实施的任何数据,因此,如果数据库API的定义和记录方式是否有效,那么它是否需要支付,等......并选择你觉得最舒服的那个。

答案 4 :(得分:1)

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