Локальное хранилище базы данных для приложений 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