【AndroidでSQLiteを制する】SQLiteDatabase#deleteを使用してデータを削除する

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

SQLデータベース内のテーブルのデータを削除します。
今回はSQLiteDatabaseに定義されているデリートを行うコンビニエンスメソッドを使用します。

SQLiteDatabase#deleteを使用する

SQLiteDatabase#updateはテーブルのデータを削除するコンビニエンスメソッドです。
SQLiteDatabase#updateには3つの引数があります。
String table データベース内のテーブル名を指定します。
String whereClause WHERE句を指定します。
「[カラム名] = ? AND [カラム名] = ? 」のように条件を設定します。
?はwhereArgsで指定します。
全行を削除する場合はnullを指定してください。
String[] whereArgs String whereClauseで指定した「?」を埋めるための文字列を配列で指定できます。
「?」の数よりも配列の要素数が多い場合は例外が発生します。
WHERE句に「?」が存在しない場合はnullを指定してください。
このメソッドは削除した行数を返却します。
このメソッドを使用してBookDAOにdeleteメソッドを実装します。
今回は指定したidのデータを削除します。
BookDAO
  public static int delete(Context context , String id){
      LoadToSQLiteMasterSQLiteOpenHelper loadToSQLiteMasterSQLiteOpenHelper = new LoadToSQLiteMasterSQLiteOpenHelper(context);
      SQLiteDatabase writableDatabase = loadToSQLiteMasterSQLiteOpenHelper.getWritableDatabase();
      int rowId = writableDatabase.delete(LoadToSQLiteMasterContract.Book.TABLE_NAME ,
              LoadToSQLiteMasterContract.Book._ID +"= ? " ,
              new String[]{id}
      );
      return rowId;
  }
SQLiteActivityにBookDAO#deleteメソッドを使用し、SQLiteActivity#deleteBookを実装します。
  private void deleteBook(String id) {
      long rowId = BookDAO.delete(getApplicationContext(),id);
      Toast.makeText(this, "削除行数:" + rowId , Toast.LENGTH_SHORT).show();
  }