WinRT/Metro应用程序的本地数据库存储

18

我正在寻找WinRT中的API,以创建一个本地数据库,用于存储偶尔需要连接应用程序的数据。我正在寻找类似SQL Compact Edition的东西。

我看到了各种各样的消息,表明要么:

  • (a) 没有任何本地数据库
  • (b) 没有本地“服务器”数据库(即SQL Express类型实例)
  • (c) 一种名为“Jet Blue”的本地数据库代码。

是否有人对此有明确的答案?如果被阻止,我不想开始这条路。


当前没有本地数据库解决方案可用。猜测那条路是否被阻塞有点傻,因为它甚至还没有进入测试阶段。 - Hans Passant
Hans,您的评论很中肯。我意识到我们甚至还没有进入 beta 阶段,只是希望有人能找到我错过的更多文档。谢谢。 - Martin Robins
1
有一个完美的本地数据库解决方案叫做Jet Blue... - fabspro
可能是Win8 Metro风格应用程序中结构化数据的本地存储的重复问题。 - Raymond Chen
@fabspro - 如果您愿意将其作为答案提交而不仅仅是评论,我将把它标记为我的接受答案。同时,也值得一提的是http://managedesent.codeplex.com/中的托管包装器。 - Martin Robins
我认为对于任何在他们的Windows 8应用程序中使用本地数据库的人来说,这个是值得认真考虑的。 - Jerry Nixon
6个回答

6

4
你可能需要查看 SQLite3-WinRT,这是一个为了在Metro风格应用中使用而编写的SQLite的封装。它包含一个只使用WinRT兼容API的SQLite版本,以及一个WinRT组件,可供C#和JavaScript应用程序使用。

3

Metro环境下没有可用的SQL CE。

a) 将没有任何本地数据库

这并不是真的。SQLite应该能够在WinRT上运行。您可以从这里下载代码,并将两个主文件包含到您的WinRT项目中。为了编译和通过认证,您需要确保使用正确的WinRT替换调用来替代不支持的Win32调用。Bob提到的第三方解决方案是一个WinRT包装器,它不包括更改SQLite以通过认证。

b) 没有本地“服务器”数据库(即SQL Express类型实例)

看起来Metro不太可能有SQL Express。

c) 一个名为“Jet Blue”的本地数据库代码。

如果您指的是Microsoft Jet数据库引擎,那么是的,它似乎得到了支持,但我宁愿使用SQLite。

还要记住,如果您使用HTML / JS,则可以选择使用IndexedDB。


0
你真的需要一个“为时断时续的应用程序存储数据”吗?这对我来说似乎有点过度了。为什么不自己将数据序列化(有各种选项)并存储呢?

Jasper:如果你以旅行推销员为例,他试图在没有网络连接的地方接受订单,那么我认为数据库是更好的选择,特别是当产品列表很大并且您想要提供搜索等功能时。话虽如此,我也认同(在某种程度上)你可以将所有内容存储在对象中,并在应用程序退出时对它们进行序列化。 - Martin Robins

0

现在有第三方解决方案或已经推出。CodePlex有一个-- http://sqlwinrt.codeplex.com/

另一个选择是将数据库访问通过 Web 服务代理,但需要进行一些工作。


谢谢。我知道我必须为主数据库提供Web服务,但由于该应用程序将在没有连接可用的地区使用(例如地下),因此我不能依赖它来满足所有使用情况。 - Martin Robins
没问题。我理解与 Web 服务的连接或未连接相关的问题。而且这需要你的工作。有可用的连接类可以提供有关网络(ConnectionProfile.Connected)的信息,该类位于 Windows.Networking.Connectivity 命名空间下。正如另一个用户上面提到的那样,您也可以依赖 INDEXDB(http://msdn.microsoft.com/library/hh673548.aspx)。 - Bob Delavan

0

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