Tips

SQLiteDatabaseクラスを使いSQLを実行する(delete) 【Android TIPS】

SQLiteDatabaseオブジェクトを使い、行を削除するにはdelete()を使用します。

 

delete()のシグネチャは以下の通り。

public int delete(String table, String whereClause, String[] whereArgs)

第1引数はテーブル名です。

第2引数のwhereClauseには、削除するデータのWHERE条件を指定します。
この値をnullに指定すると、すべての行が削除対象となります。

第4引数のwhereArgsには、削除するデータのwhere条件を「?」を使ってパラメータで指定した場合のパラメータ値をString配列で指定します。
WHERE条件に「?」パラメータが無い場合は、nullを指定します。

 

戻り値には削除した行数が返されます。

 

使用例は以下の通り。dbはSQLiteDatabaseオブジェクトです。

db.delete("person", "name = ?", new String[]{"鈴木 二郎"});

 

この例で実行しているdelete()は以下のSQLと同義になります。

DELETE FROM person WHERE name = '鈴木 二郎';

WHERE句は、第2引数の「name = ?」のパラメータとなっている「?」のところに、第3引数の「鈴木 二郎」が埋め込まれた形となります。

 

この例では「?」パラメータは1つしか使用していませんが、2つ以上を指定することも可能です。

db.delete("person", "age > ? AND age < ?", new String[]{"20", "50"});

 

whereClauseやwhereArgsの使い方はupdate()と同じですので、一緒に覚えてしまいましょう。

■SQLiteDatabaseクラスを使いSQLを実行する(update)【Android TIPS】

https://techpjin.sakura.ne.jp/techpjin_new/archives/23269

 

最後に、Androidソースコードの抜粋を紹介します。

insert()やupdate()のときは、SQLを実際に実行するのはxxxxWithOnConflict()というメソッドが担っていましたが、delete()の場合はこのメソッド自身がSQLを実行しています。

public int delete(String table, String whereClause, String[] whereArgs) {
    acquireReference();
    try {
        SQLiteStatement statement =  new SQLiteStatement(this, "DELETE FROM " + table +
                (!TextUtils.isEmpty(whereClause) ? " WHERE " + whereClause : ""), whereArgs);
        try {
            return statement.executeUpdateDelete();
        } finally {
            statement.close();
        }
    } finally {
        releaseReference();
    }
}

 

delete()はupdate()やinsert()と比べると簡単ですね。

Androidアプリ開発の必須知識!JAVAプログラミングを学べる連載リンク

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search