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()と比べると簡単ですね。