【发布时间】:2013-12-11 01:14:34
【问题描述】:
有人知道我的应用程序可以使用的适用于 Windows Phone 8 的良好数据库或 NoSql 引擎吗?
我需要能够从 SD 卡打开只读数据库文件。它需要能够处理存储 blob(png 图像),因为我想用它来提供地图图块以供离线使用。数据库中需要存储 100,000 个图像块。
我已经通过 C# 包装器尝试了SQLite for Windows Phone,但我似乎无法让它与位于 SD 卡上的数据库文件一起使用。
Windows Phone 应用程序访问位于 SD 卡上的文件存在一些限制,但有可能: http://msdn.microsoft.com/library/windowsphone/develop/jj720573%28v=vs.105%29.aspx
一位 Microsoft 员工对我使用 SQLite 的困难的反馈:
Windows Phone 应用可以使用以下方式从 SD 卡读取特定文件类型 Microsoft.Phone.Storage API。
我希望手机的 SQLite 实现会尝试打开 使用标准 C 文件 API 而不是使用存储的数据库 对象,因此要求数据库在 Xap 中或隔离 存储并且无法访问 SD 卡上的数据库(这是 绝对是用于 Windows 应用商店应用的 SQLite)。
来自 SQLite SDK 社区的反馈:
显然,为具有一些 C++ 技能的人添加对 SQLite SDK 的支持应该是相当直接的(我的有点生疏!):
回复:
- http://www.mail-archive.com/sqlite-users@sqlite.org/msg81059.html
- http://www.mail-archive.com/sqlite-users@sqlite.org/msg81060.html
我原来的问题:
【问题讨论】:
-
您可以尝试使用 JSON/XML。将 PNG 图像存储为 base64 字符串。我不确定它是多么有效/可行的解决方案。
-
感谢您的建议,但我认为它不会起作用...该文件将在多 GB 的大小范围内,因此无法将其全部加载到记忆。我猜想根据需要挑选出文本文件的一小部分以供使用将非常困难。需要一些非常复杂的代码才能想出引擎。然后可能需要提出一个索引等。然后在你知道之前我已经开发了一个 SQLite ;)
-
您无法在 Windows Phone 上写入 SD。访问是只读的。 stackoverflow.com/questions/13177731/…
-
这就是为什么我只想要只读访问 - “我需要能够从 SD 卡打开只读数据库文件”。
-
也许作为 SQLite 问题的解决方法,您可以将图像拉出数据库并放到 SD 卡上。然后,您可以将数据库复制到隔离存储上并在那里访问它;您可以继续访问 SD 卡上的图像。您可能需要为您的应用注册 PNG 扩展名(或者您可以将扩展名更改为您的应用独有的内容 - 例如“.nztopopng”或类似的内容。
标签: c# database sqlite windows-phone-8 nosql