哪种本地数据库适用于Windows 8 Store应用程序?

21

我正在使用 C#XAML 以及 Visual Studio 2012 开发一个 Windows 8商店应用程序(Metro设计)。

无需具备多用户支持等数据库服务器。

我想将数据存储在本地数据库中,但不知道哪种数据库适合我的需求。也许可以考虑使用 SQLite?或者有更适合 Windows Store 应用程序并在 Visual Studio 中集成得更好的解决方案吗?

该应用程序类似于一个日历,数据库应存储用户数据,包括日期、任务等内容。


1
当使用“Windows应用本地数据库”这个词进行Bing搜索时,这个问题是排名第一的结果。看起来被接受的答案已经过时了,因为现在支持SQLite。也许答案应该改变一下? - ray
谢谢你的提示。我已经改变了采纳的答案! - Simon Schürg
5个回答

18

1
如果在Windows Store应用程序中使用SQLite,每次发布时是否需要提交对应于x86、x64和ARM的三个包?它似乎不支持“任何CPU”。 - Hong
1
由于SQLite是本地组件,您无法选择AnyCPU。但是,您可以创建三个(x86、x64和ARM)应用程序包,并同时上传到商店以获取相同的应用程序。 - Ercan Özdemir


11

好的,这是一个很棒的问题,我也曾经通过艰苦的方式学习了解。 WinRT应用程序默认情况下不能直接访问任何类型的数据库结构,包括Express、Compact、CE、SQLite等。

有三种方法可以解决这个问题。第一种方法是不使用数据库,而是使用本地文件结构存储和检索数据。XML非常适合此类操作,因为您可以维护许多与数据库相同的功能。

第二种选择是使用IndexedDB。它类似于cookie样式的本地存储模型,其中文件保存在您的应用程序本地应用文件夹中。

第三种选择是使用Web服务。WinRT确实可以访问Internet,这意味着您可以编写可以被调用的API和WebServices。这意味着您需要运行连接到主数据库的服务器。当您的应用程序需要数据时,调用您的Web服务并获取所需数据。

总的来说,对于您所描述的应用程序,第一种选择可能最适合您的需要。将一个本地XML文件保留在应用程序文件夹中并从中读取/写入数据。


好的,我想我会用XML的方式来做。Json.NET看起来很有趣http://json.codeplex.com/。 - Simon Schürg
如果我的应用程序的对象在未来版本中发生更改,那么会发生什么?我是否仍然能够将旧的JSON文件反序列化为新的数据对象? - Simon Schürg
6
支持SQLite,并有一个适用于Windows Runtime的SQLite扩展。 - Rami Sarieddine
1
你应该明确指出,即使例如 SQLite 在操作系统中不可用,但将其链接到你的应用程序也很容易。 - Prof. Falken
我曾经询问过一个关于在C++中完成同样事情的问题,但令人费解的是它被标记为这个问题的重复。 我的问题在这里:http://stackoverflow.com/questions/18500763/using-a-database-for-a-windows-8-store-app-using-c - Raman Sharma
使用C++/CX来使用SQLite的WinRT接口并不是一件令人愉快的事情:http://stackoverflow.com/questions/19309508/using-sqlite-winrt-from-a-c-windows-store-app - Raman Sharma

2
我的问题被标记为与这个问题重复(尽管它是关于C++而不是C#的)。我认为我仍然应该在这里发布我的发现。 C++应用程序有另一个选择: 可扩展存储引擎(ESE) 所有此类API的列表可在此链接下的Jet部分找到。

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接