2016-03-05 3 views
0

Пытается удалить строку внутри таблицы, используя запрос по идентификатору. Предположим, что id не существует, то как узнать, что идентификатор или информация о строке не существует?Android SQLite: как узнать данные перед удалением строки

код ниже:

public void deletePerson(String personId){ 
     SQLiteDatabase sqldb = getWritableDatabase(); 
     sqldb.execSQL("DELETE FROM " + TABLE_NAME + " WHERE " + COLUMN_NAME + " = '" + personId+"'"); 
     Toast.makeText(context,"Record removedId", Toast.LENGTH_SHORT).show(); 
    } 

ответ

1
public boolean getPerson(String personId){ 
    SQLiteDatabase sqldb = getWritableDatabase(); 
    Cursor c=  sqldb.execSQL("SELECT * FROM " + TABLE_NAME + " WHERE " + COLUMN_NAME + " = '" + personId+"'"); 
    if(c!=null){ 
     return true; 
    } 
    return false; 
} 
+0

Прошло, но прошло время (необходимо принять в течение 2 минут) – HackImti

1

Вы не обязательно должны знать, DELETE не будет ошибкой, если нет записи, которая отвечает критериям, где это.

0

Вы можете создать функцию, которая возвращает boolean value на основе существования данных в sqlite.

public boolean isExists(String personId) 
{ 
    SQLiteDatabase sqldb = getWritableDatabase(); 
    String selectString = "SELECT * FROM " + _TABLE + " WHERE " + _ID + " =?"; 
    Cursor cursor = sqldb.rawQuery(selectString, new String[] {personId}); 

    boolean isExist = false; 

    if(cursor.moveToFirst()){ 
     isExist = true; 
    } 

    sqldb.close();    
    return isExist; 
} 

Ссылка на номер Android SQLite Database CRUD.

0

Хорошо, получив все ваши ответы, я решил мою проблему и то, что я сделал это:

public void deletePerson(String personId){ 
     SQLiteDatabase sqldb = getWritableDatabase(); 
     Cursor cursor = sqldb.rawQuery("SELECT " + COLUMN_NAME + " FROM " + TABLE_NAME + " WHERE " + COLUMN_NAME + " = '" + personId + "'", null); 
     if(cursor.getCount()!=0){ 
      sqldb.execSQL("DELETE FROM " + TABLE_NAME + " WHERE " + COLUMN_NAME + " = '" + personId + "'"); 
      Toast.makeText(context,"Successfully deleted", Toast.LENGTH_SHORT).show(); 
     }else{ 
      Toast.makeText(context,personId+" not found", Toast.LENGTH_LONG).show(); 
     } 
    } 

Спасибо!

+0

Вам действительно ** не нужно ** знать, существует ли запись до удаления (или обновления). Просто попробуйте удалить его. DELETE (и UPDATE) будет изящно терпеть неудачу без ошибок, если запись не существует. –

+0

Я хотел сообщить пользователю, что данные, которые он пытается удалить, не существует. – HackImti

+0

Это не полезная информация. Не перегружайте ** процессорное время для этого. –

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