3

私はメトロ UI アプリケーションを開発しており、既に作成されたコードを利用するために、JET の代わりに内部データに SQLite を使用したいと考えています。

ただし、データベースを開くために sqlite3_open を使用しようとすると、機能しません。データベースを開けないというエラーが表示されます。

SQLite で使用される一部の API は、metro スタイルのアプリケーションでは使用できないと思います。

誰かがこれについて私を助けることができますか? 少なくとも、どの API を移植する必要があるかを特定する方法を教えてください。

4

5 に答える 5

3

このコードは動作するはずです:

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);

SQLite で使用される一部の API は、metro スタイルのアプリケーションでは使用できないと思います。

(少なくともプレビュー リリースでは) 動作する可能性がありますが、許可されていません。Windows App Cert Kit は次のように述べています。

   エラー: このアプリケーションは、サポートされている API チェックに失敗しました。
   このアプリケーション タイプでは、kernel32.dll の API CreateFileA はサポートされていません。
   このアプリケーション タイプでは、kernel32.dll の API CreateFileW はサポートされていません。
   このアプリケーション タイプでは、kernel32.dll の API DeleteFileA はサポートされていません。
    :
    :
于 2011-10-14T05:38:11.313 に答える
1

これを試してください(UTF-8データベースファイル名のみ):

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

詳細については、 sqlite.orgを参照してください。

于 2011-12-06T06:46:39.790 に答える
1

Windows ストアのガイドラインと互換性のある新しい WinRT SQLite3 バリアントがリリースされました。https://github.com/doo/SQLite3-WinRTを参照してください

于 2012-05-07T09:51:21.717 に答える
1

ローカル フォルダーでデータベースを開こうとします。動作するラッパーは次のとおりです: http://sqlwinrt.codeplex.com/

于 2011-10-13T20:19:43.730 に答える
0

WinRT で sqllite を試したことはありませんが、動作するはずです。最も可能性が高いのは、開こうとしているファイルに対する適切な権限がないことです。fopen() などの単純な API でファイルを開くことができることを確認してください。それが失敗した場合、それは権限の問題です。アプリが自然な権限を持つディレクトリにデータベースを配置する必要があります。たとえば、ユーザーのドキュメント フォルダーに置くことはできません。

于 2011-10-12T21:19:20.553 に答える