2016-10-07 5 views
0

I次のコードを持っている:私は、アプリケーションはSQLiteのネット使用されて見ることができるものから、SQLiteテーブルが存在するかどうかを確認することは可能ですか?

 dbcon = DependencyService.Get<ISQLite>().GetConnection(); 

     // create the tables 
     dbcon.CreateTable<Category>(); 
     dbcon.CreateTable<Settings>(); 

     var settings = dbcon.Table<Settings>().ToList(); 
     if (settings.Count <= 0) 
     { 
      var noa = new Settings { Setting = "NumberOfAnswers", Value = 5 }; 
      var cfs = new Settings { Setting = "CardFrontSide", Value = 0 }; 
      dbcon.Insert(noa); 
      dbcon.Insert(cfs); 
     } 

     var categories = dbcon.Table<Category>().ToList(); 
     if (categories.Count <= 0) 
     { 
      InsertCategory(); 
     } 

を私が知りたいのですがどのような

かどうかを確認するために私がチェックすることができる方法があるかどうかでありますとにかくそれを試して作成し、それに行があるかどうかを調べることです。

+0

どのようにあなたがする必要がある何を出力/エラー時にテーブルの上に簡単な 'SELECT'を実行し、ベースは? –

答えて

7

このクエリでは、あなたが「存在する」のチェックのための単一の行にそれを絞り込むことができますデータベース

SELECT * FROM sqlite_master WHERE type = 'table'; 

内のテーブルのリストを返します。

SELECT * FROM sqlite_master WHERE type = 'table' AND tbl_name = 'xyz'; 
+0

私より速く1のために:) –

+0

あなたの悪くはないです。それは私よりもコピー&ペーストです。 :o) – Tomalak

+0

Heheよ、だから私はソース –

4

あなたはこのような何かを行うことができます。

public static bool TableExists<T> (SQLiteConnection connection) 
{  
    const string cmdText = "SELECT name FROM sqlite_master WHERE type='table' AND name=?"; 
    var cmd = connection.CreateCommand (cmdText, typeof(T).Name); 
    return cmd.ExecuteScalar<string>() != null; 
} 

Source

関連する問題