5

SQLite を使用してデータベースを書き込む WinRT DLL を開発しようとしています。しかし、SQLite ソース コードの一部の win32 API は、メトロではサポートされていないようLoadLibraryWですGetTempPathA

SQLite ソース コードをコンパイルする方法、または WinRT DLL で SQLite を使用する方法はありますか?

4

6 に答える 6

2

いつでも sqlite3 を静的にリンクし、 sqlite3_vfs を介してファイルなどにアクセスするための新しい関数を定義できます

于 2011-10-14T09:23:47.777 に答える
2

VS2012 には、Windows ランタイム用の SQLite と呼ばれる拡張機能があります。これは、Visual Studio からダウンロードしてインストールできます (IDE の再起動が必要です)。次に、WinRT プロジェクトに移動し、[参照を追加] の [Windows] で [拡張機能] を選択すると、それが表示されます。

ここに画像の説明を入力

于 2012-08-31T18:00:19.030 に答える
1

現在、サポートされている API のみを使用する SQLiteのwinrt ブランチがあります。その上で、任意の WinRT 言語で SQLite を使用できる WinRT コンポーネントであるSQLite3-WinRTを実装しました。

于 2012-05-02T13:13:41.503 に答える
0
  1. に名前sqlite3.cを変更sqlite3.cpp
  2. LoadLibraryと置き換えますLoadPackagedLibrary
  3. 多くの構文エラーを修正します。
于 2011-11-17T06:49:11.690 に答える
0

sqlite/winrt の使用に関するいくつかの注意事項を追加して、頭の痛い問題を解決してください。

  1. Winrt では、特定のフォルダー (c:\users\<user>\My documents\<app>) にのみ書き込むことができます。ここにDBを配置する必要があります。(管理された環境では些細なことです。)

  2. Sqlite が一時ファイルを使用する時間からの時間。(一時的なインデックス、バキュームなどを必要とする複雑なクエリ) これらのファイルも app フォルダーに作成する必要がありますが、temp_store_directory プラグマで設定しない限り、sqlite はこれを行いません。これを行わないと、ランダムなユーザー バグ レポートが届く可能性があります。

  3. 上記のプラグマは公式に非推奨であることに注意してください。これは無視してください。ネイティブ コーダーは代わりにグローバル変数 sqlite3_temp_directory を使用したくなるかもしれませんが (推奨される方法)、現在のバイナリ リリース (dll) はこの変数を公開していません。(自分で行うこともできますが、sqlite ソースを変更して _declspec(dllexport) 属性を使用します。def ファイルは機能しません。)

  4. sqlite ファイル操作に頼りすぎないでください。実装は特に良くありません。たとえば、書き込み権限がない場合でも、書き込みアクセスのテストは成功します。

これとは別に、winrt に問題はないようです。上級ユーザーは、独自の (より優れた) winrt ドライバーを提供する場合があります。難しすぎない...

于 2012-09-03T11:00:40.750 に答える
0

SQLite サイトより

SQLite バージョン 3.7.13 は、Microsoft Windows 8 の WinRT およびメトロ スタイル アプリケーションのサポートを追加します。3.7.13 リリースは、この新しい機能を開発者の手に届けるために、以前のリリース後、通常よりも早くリリースされます。メトロ スタイル アプリケーションで SQLite を使用するには、-DSQLITE_OS_WINRT フラグを指定してコンパイルします。WinRT のアプリケーションのセキュリティと安全性の要件が強化されているため、すべてのデータベース ファイル名は完全なパス名にする必要があります。SQLite は、インストール ディレクトリおよびアプリケーション データ ディレクトリの外部にあるデータベースにアクセスできないことに注意してください。この制限は、WinRT のもう 1 つのセキュリティおよび安全機能です。これらの制限を除けば、SQLite は他のすべてのシステムとまったく同じように WinRT で動作するはずです。

Tim Heuerが彼のブログで、SQLite を使用してメトロ アプリを構築する手順を説明しています。

于 2012-06-25T00:41:36.937 に答える