Локальное хранилище базы данных для приложений WinRT/Metro

Я пытаюсь найти API-интерфейс в WinRT, который позволит мне создать локальную базу данных, которая может использоваться для хранения данных для периодически подключенного приложения. Я ищу что-то вроде SQL Compact Edition.

Я видел различные сообщения на разных досках, указывающие, что там либо

  • (а) не будет никаких локальных баз данных вообще
  • (б) нет локальных "серверных" баз данных (т.е. экземпляров типа SQL Express)
  • (c) Код локальной базы данных с именем "Jet Blue".

У кого-нибудь есть однозначный ответ на это? Я не хочу идти по этому пути, если он заблокирован.

6 ответов

SQLite теперь официально поддерживается. Смотрите блог Тима Хойера для деталей. Для более простого решения с меньшим количеством данных вы можете использовать http://winrtdatabase.codeplex.com/

Возможно, вы захотите взглянуть на SQLite3-WinRT, оболочку для SQLite, которую мы написали для использования в приложении в стиле Metro. Он содержит версию SQLite, которая использует только WinRT-совместимый API, и компонент WinRT для его использования в приложениях C# и JavaScript.

Для Metro нет SQL CE.

а) не будет никаких локальных баз данных вообще

Это неправда. SQLite должен быть в состоянии работать на WinRT. Вы можете скачать код здесь и включить два основных файла в ваш проект WinRT. Чтобы скомпилировать и пройти сертификацию, вам необходимо убедиться, что вы используете правильные вызовы замены WinRT для вызовов Win32, которые не поддерживаются. Стороннее решение, упомянутое Бобом, - это оболочка WinRT, которая не содержит изменений в SQLite для прохождения сертификации.

(б) нет локальных "серверных" баз данных (т.е. экземпляров типа SQL Express)

Кажется маловероятным, что будет SQL Express для метро.

(c) Код локальной базы данных с именем "Jet Blue".

Если вы имеете в виду ядро ​​базы данных Microsoft Jet, да, похоже, что оно поддерживается, но я бы предпочел использовать SQLite.

Также помните, что если вы используете HTML/JS, у вас есть возможность использовать IndexedDB

Есть сторонние решения, выходящие или уже вышедшие. У CodePlex есть один - http://sqlwinrt.codeplex.com/

Другой вариант, который требует некоторой работы с вашей стороны, - это прокси доступ к вашей базе данных через веб-сервис.

Вам действительно нужно "хранить данные для периодически подключенного приложения"? Это звучит немного излишне для меня. Почему бы не сериализовать данные (различные варианты) для хранения самостоятельно?

Нет (встроенной) базы данных в соответствии с этим
http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-930C

Другие вопросы по тегам