0

二重の SQLite DB を作成しないようにするには、既に存在するかどうかを検出する方法は?

1) 以下のコードは、App.xaml.cs に SQLite DB を作成しています。

2) App.xaml.cs のこのコードは、SQLite DB を作成していますか、テーブルだけを作成していますか、それとも両方を作成していますか?

3) MainPage で、SQLite DB が作成されているかどうかをもう一度確認するにはどうすればよいですか。

問題: エラー メッセージが表示されず、MainPage が表示されない。

あなたの助けに感謝します。ありがとう

 -- 以下では、App.xaml.cs の rootFrame を確認しています。

if (rootFrame == null)
{


 //-- 作成前に検出する

 bool result = await GetIfFileExistsAsync(DBPath);


 もし (結果 == 真)               
 {
      MessageDialog mError = new MessageDialog("DB 作成済み", "DB 作成ステータス");
     await mError.ShowAsync();
     戻る;

 }
 そうしないと
  {
    MessageDialog mError = new MessageDialog("DB は作成されていません", "DB は作成されていません");
   await mError.ShowAsync();

   CreateDBNow();

   }

//---- rootFrame

}




 プライベート非同期タスク GetIfFileExistsAsync(string strDBPath)
 {
    試す
     {

     var dbFile = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(strDBPath);

      if (dbFile != null)
      {
       true を返します。
      }
     そうしないと
      {
        false を返します。
      }


    }
    キャッチ (FileNotFoundException)
    {
      false を返します。

    }
 }

 プライベート非同期ボイド CreateDBNow()
 {

    DBPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "customers.sqlite");


   使用 (var db = new SQLite.SQLiteConnection(DBPath))
   {
    // テーブルが存在しない場合は作成します
    デシベル。CreateTable();

   }

  MessageDialog mError = new MessageDialog("DB が作成されました", "DB が作成されました");
  await mError.ShowAsync();


  }


--- メインページで
SQLite DB が作成されているかどうかをもう一度確認する必要があります。
4

1 に答える 1

0

ベスト プラクティスとして、開発者はデータベースをローカル フォルダーに保存するため、以下の便利な方法が役に立ちます。WinRT には、ファイルが存在するかどうかを確認する機能がありません。したがって、これはデータベース ファイルだけでなく、すべてのファイルのチェックに適用できますStorageFile

public async Task<bool> IsDatabaseExistsAsync(string DatabaseNameWithExtension)
{
    try
    {
        var dbFile = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(DatabaseNameWithExtension);
        return true;
    }
    catch (Exception)
    {
        return false;
    }
}
于 2013-09-19T10:30:54.137 に答える