0

「Sqlite for Windows Runtime」と sqlite-net を使用します ( http://timheuer.com/blog/archive/2012/08/07/updated-how-to-using-sqlite-from-windows-で説明されているとおり)。 store-apps.aspx ) を使用して、Windows 8 Metro-App を開発します。Program-Directory でデータベースを開きたい場合は問題ありません。

var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.sqlite");
using (var db = new SQLite.SQLiteConnection(dbPath)) {
  ...
}

しかし、次のように extern パスを使用したい場合:

var dbPath = "C:\\Users\\xxxxxx\\db.sqlite";

その後、「データベース ファイルを開けません」というエラーが発生します。なんで?ここでは C# を使用していますが、通常は C++ を使用しますが、この問題については問題ないと確信しています ;)

4

2 に答える 2

6

ファイル システム上の任意のファイルを選択することはできません。詳しくはこちらをご覧ください。

デフォルトでは、次の場所にアクセスできます。

  • アプリケーションのインストール ディレクトリ
  • アプリケーション データの場所
  • ユーザーのダウンロード フォルダ

さらに、アプリはデフォルトで、接続されたデバイス上の一部のファイルにアクセスできます。これは、アプリがAutoPlay Device 拡張機能を使用して、ユーザーがカメラや USB サム ドライブなどのデバイスをシステムに接続したときに自動的に起動する場合のオプションです。アプリがアクセスできるファイルは、アプリ マニフェストの File Type Association 宣言で指定された特定のファイル タイプに限定されます。もちろん、ファイル ピッカーを呼び出し ( FileOpenPickerFolderPickerを使用)、アプリがアクセスするファイルとフォルダーをユーザーが選択できるようにすることで、リムーバブル デバイス上のファイルとフォルダーにアクセスすることもできます。ファイル ピッカーの使用方法については、クイック スタート: ファイル ピッカーを使用したファイルへのアクセスを参照してください。

適切な機能が宣言されている場合は、以下にもアクセスできます。

次の機能の組み合わせが必要です。ホーム ネットワークと職場ネットワークの機能:

PrivateNetworkClientServer

少なくとも 1 つのインターネットおよびパブリック ネットワーク機能:

InternetClient InternetClientServer

また、該当する場合は、ドメイン資格情報機能:

エンタープライズ認証

注 アプリがこの場所でアクセスできる特定のファイルの種類を宣言するファイルの種類の関連付けをアプリ マニフェストに追加する必要があります。

于 2012-08-31T18:35:46.763 に答える
1

Windows Metro アプリケーションでは... アプリケーションのサンドボックス プロパティのみをサポートします。

だから使えない

var dbPath = "C:\\Users\\xxxxxx\\db.sqlite";

U は、ローカル ストレージまたはアプリケーションがインストールされたディレクトリにのみデータを保存できます。

それ以外のパスは使用しないでください。効果がないでしょう 。

于 2013-01-29T11:11:57.607 に答える