2018年1月7日 星期日

Android-SQLite 使用 SQLiteOpenHelper (五)_刪除資料( Delete )

上一篇有提到修改資料

此篇則是說明如何刪除對應資料
使用此功能必須要非常謹慎
所以要再次確認此功能是否是您所想要的

1 . 刪除資料
private static final String TABLE_CONTACTS = "counter";
private static final String KEY_DATE = "count_date";
private static final String KEY_NUMBER = "count_number";
private static final String KEY_NOTE = "count_note";
/**
 * 刪除資料列
 */
public int deleteData(@NonNull Date mData) {

    // DELETE FROM Table where 條件....
    String deleteVal = KEY_DATE + " = ?";
    DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String[] strVal = new String[]{sdf.format(mData)};

    // 如果你有多條件
    /*
    String strSQL = KEY_DATE + " = ? AND " + KEY_NOTE + " = ?";
    // 第一問號,第二問號...以此類推
    String[] strings = new String[]{sdf.format(mDate), "Apple"};
    */

    SQLiteDatabase db = this.getWritableDatabase();
    return db.delete(TABLE_CONTACTS, deleteVal, strVal);
} 

為什麼 strSQL 不用放完整字組?為什麼條件參數要提出來?
要解這些問題前就必須追程式碼了













原來內部方法已經將刪除指令寫在內部
所以我們只要編寫 Where 後的指令
那為什麼要用 String 裝條件的變數?
也是因為上圖最後幾行所提出來的
依照集合內的參數依序擺放

其實擺放參數有以下此方法 :
1 . 用集合方法( 如上方 )
2 . 只接將參數寫在條件內
private static final String TABLE_CONTACTS = "counter";
private static final String KEY_DATE = "count_date";
private static final String KEY_NUMBER = "count_number";
private static final String KEY_NOTE = "count_note";
. 
.
.
public int deleteData(@NonNull Date mDate, int number, String note) {
   
    String strSQL = KEY_DATE + " = '2018-01-05'";

    SQLiteDatabase db = this.getWritableDatabase();
    return db.delete(TABLE_CONTACTS, strSQL, null);
}

歡迎轉載,請註明出處。

沒有留言:

張貼留言