【C#】sqlite-net-pclでテーブルからデータを削除する方法

手軽にアプリケーションに DB を組み込める SQLite をより簡単に使うためのフレームワーク sqlite-net-pcl を使ってテーブルから特定のデータを削除する方法を解説します。

sqlite-net-pcl を使用することで簡単にデータを取り扱うことができるので、このフレームワークを作成してくれた作者には感謝しかありません。また SQLite や sqlite-net-pcl について、各タグにてほかの記事も解説しているので確認してみてください。

sqlite-net-pcl でデータを削除する方法

以前の「sqlite-net-pclでテーブルに登録されたデータに対して更新する方法」にてデータを更新する方法を解説していますが、少しだけ扱い方が似ています。削除する場合には指定の行を削除する方法とすべてを削除する2つの方法が用意されています。

//特定を削除
public int Delete(object objectToDelete);

//すべてを削除
public int DeleteAll();

特定のデータを削除する場合は Delete メソッドを使用して、削除したいオブジェクトを引数として渡すことで処理してくれます。また、すべてのデータを削除する場合は DeleteAll メソッドを使用するだけです。

using (var connection = new SQLiteConnection("DBのパス")) 
{ 
    connection.CreateTable<Item>(); 
    connection.Delete(selectedItem); 
}

サンプルは上記のような感じとなります。CreateTable メソッドが記述されているのは、ファイル内にテーブルが作成されてない場合に備えるためのおまじないです。テーブルの作成については「sqlite-net-pclで新規のテーブルを作成する方法」を確認しておきましょう。

また、正常に更新されたかどうかを確認するには、Delete メソッドの戻り値が 0 より大きいことを確認すればOKです。これについては Update メソッドと似ていますね。その点 DeleteAll メソッドはすべてのデータを消すだけなので戻り値はありません。

using (var connection = new SQLiteConnection("DBのパス")) 
{ 
    connection.CreateTable<Item>(); 
    var executedCounts = connection.Delete(selectedItem);
    if (executedCounts <= 0)
    {
        Console.WriteLine("削除に失敗しました。");
    } 
}

上記のようなサンプルコードでよいかと思います。また Delete メソッドについても、削除対象のオブジェクトをプライマリーキーで判定しているはずですので、削除対象がプライマリーキーを持っているかのチェックはしておくほうが無難です。