我对存储桌面应用程序的数据有疑问, 如果我要部署没有MS SQL数据库的应用程序, 我怎么能方便检索/存储数据。 我知道我也可以将数据对象序列化为文件(例如XML文件),还有其他更有效或更有效的方法吗?
答案 0 :(得分:4)
SQLite非常适合作为嵌入式数据库。即使有.NET/Mono bindings可用。
答案 1 :(得分:2)
答案 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字典,但由磁盘上的数据库文件支持。