2016-07-07 7 views
-1

Этот код удаляет только одну запись в моей таблице, чего я хочу достичь, удалите все записи, которые имеют заданное значение телефонного номера. Im новое для SQlite, небольшая помощь очень ценится. Заранее спасибо.SQlite удалить все строки, которые имеют определенное строковое значение

Этот код удаления одной записи Устпешно:

public void delSmsData(int id){ 
    String deleteQuery = "DELETE FROM "+TABLE_LO_SMSDATA+" WHERE _id="+id+""; 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.execSQL(deleteQuery); //delete single row by ID in a table 
    db.execSQL("vacuum"); 
    db.close(); 
    Log.e("Debug", "Successful delete of message with id no. " + id); 
} 

Я успешно удалил все записи с этим кодом. Спасибо тем, кто помог.

public void delAllSmsByPhone(String phone){ 
    String deleteQuery = "DELETE FROM "+TABLE_LO_SMSDATA+" WHERE _phone='"+phone+"'"; 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.execSQL(deleteQuery); 
    db.execSQL("vacuum"); 
    db.close(); 
} 

Это моя Структура таблицы:

String CREATE_LO_SMSDATA_TABLE = "CREATE TABLE " 
      +TABLE_LO_SMSDATA+"(" 
      +KEY_ID+" INTEGER PRIMARY KEY AUTOINCREMENT," 
      +KEY_EMAIL+" TEXT," 
      +KEY_TARGETNAME+" TEXT," 
      +KEY_SMSTYPE+" TEXT," 
      +KEY_PHONE+" TEXT," 
      +KEY_CONTACTNAME+" TEXT," 
      +KEY_SMSBODY+" TEXT," 
      +KEY_DATE+" TEXT"+")"; 
    db.execSQL(CREATE_LO_SMSDATA_TABLE); 
+0

что ваша структура таблицы? Является ли '_phone' основным ключом? –

+0

@AdamForbis я обновил вопрос. – Draeko

+1

'... WHERE _phone = '" + phone + "'" ' –

ответ

1

Я не понимаю вас полностью. Вы пытались запустить код?

Этот код не правильный подход

Это абсолютно правильный подход. DELETE может удалить любое количество строк не только одного. Он удаляет все строки, для которых условие WHERE истинно.

Доказательство:

 
sqlite> .tables 
sms 
sqlite> .schema sms 
CREATE TABLE `sms` (
    `_id` INTEGER PRIMARY KEY AUTOINCREMENT, 
    `_phone` TEXT 
); 
sqlite> SELECT * FROM sms; 
1|+79271234567 
2|+79271234567 
3|+79213983722 
4|+79271234567 
5|+78450738422 
6|+79271234567 
7|+77432739417 
8|+74673627246 
9|+79271234567 
10|+79271234567 
sqlite> DELETE FROM sms WHERE _phone='+79271234567'; 
sqlite> SELECT * FROM sms; 
3|+79213983722 
5|+78450738422 
7|+77432739417 
8|+74673627246 
+0

да, я забыл, извините, мой телефон зашифрован. Спасибо за ... WHERE _phone = '" + phone + "'". Эта. – Draeko

Смежные вопросы