Использование SQLite с WinRT - PullRequest
3 голосов
/ 13 октября 2011

Я разрабатываю приложение Metro UI и хотел бы использовать SQLite для некоторых внутренних данных вместо JET, чтобы воспользоваться уже написанным кодом.

Однако, когда я пытаюсь использовать sqlite3_open для открытия базы данных, это не работает. Я получаю сообщение об ошибке, в котором говорится, что не удается открыть базу данных.

Я считаю, что некоторые API, используемые SQLite, нельзя использовать в приложениях в стиле metro.

Может ли кто-нибудь помочь мне в этом? По крайней мере, скажите мне, как определить, какой apis должен быть перенесен?

Ответы [ 5 ]

3 голосов
/ 14 октября 2011

Этот код должен работать:

auto localAppDataParh = Windows::Storage::ApplicationData::Current->LocalFolder->Path;
std::wstring path( localAppDataParh->Data() );
path += L"\\sample.db";
sqlite3* db;
int rc = sqlite3_open16( path.c_str(), &db);

Я считаю, что некоторые API, используемые SQLite, нельзя использовать в приложениях в стиле metro.

может работать (по крайней мере, в Preview Release), но не разрешено. Сертификат Windows App Kit говорит:

   Error: This application failed the supported API check.
   API CreateFileA in kernel32.dll is not supported for this application type. 
   API CreateFileW in kernel32.dll is not supported for this application type. 
   API DeleteFileA in kernel32.dll is not supported for this application type. 
    :
    :
1 голос
/ 07 мая 2012

Только что был выпущен новый вариант WinRT SQLite3, совместимый с рекомендациями Магазина Windows. Смотри https://github.com/doo/SQLite3-WinRT

1 голос
/ 06 декабря 2011

попробуйте это (только для имен файлов базы данных UTF-8):

int ret = Sqlite3.sqlite3_open_v2("qq.db", out db, 1, "");

Подробнее см. sqlite.org .

1 голос
/ 14 октября 2011

Попробуйте открыть базу данных в локальной папке.Вот оболочка, которая работает: http://sqlwinrt.codeplex.com/

0 голосов
/ 13 октября 2011

Я не пробовал sqllite в WinRT, но я думаю, что он должен работать.Наиболее вероятным кандидатом является то, что у вас нет необходимых прав доступа к файлу, который вы пытаетесь открыть.Убедитесь, что вы можете открыть файл с помощью простого API, такого как fopen ().Если это не удается, то это проблема с разрешениями.Ваша база данных должна находиться в каталоге, к которому у вашего приложения есть естественные права.Например, он не может быть в папке документов пользователя.

...