2012-04-17 2 views
0

Мне нужна помощь по делу ...Android db.delete(); on ListActivity

Я создал список с адаптером курсора, который подключается к моей базе данных, и показывает мне список всего, что я сохранил в своей таблице. позже я создал контекстное меню, которое появляется с longckick на нужную строку

контекст позиции

  id = getListAdapter().getItemId(info.position); 

это мой метод удаления в databaseHelper

void deleteReg(SQLiteDatabase db) 
    { 

     db.delete(TabellaRegistry.TABLE_NAME,null, null); 
    } 

и я использую, что в моей деятельности для удаления выбранной строки:

final SQLiteDatabase db = databaseHelper.getWritableDatabase(); 
           databaseHelper.deleteReg(db,null, null, null, null, null, null); 

, но это так ... я удаляю все в своей таблице ...

Как удалить только выбранную строку через контекстное меню?

Я надеюсь, что я объяснил себе, спасибо заранее

+0

Читать документ для db.delete снова !!! Передача нулей в качестве 2-го и 3-го параметров удалит целые данные из таблицы – Selvin

ответ

3

Пропустив NULL в качестве второго аргумента в этой строке:

db.delete(TabellaRegistry.TABLE_NAME,null, null); 

Вы всегда будете удалить всю таблицу. Как было упомянуто в документации Android, параметры являются следующие:

общественного ИНТ удаления (String таблицы, String WhereClause, String [] whereArgs)

таблица - таблица для удаления из

whereClause - необязательное предложение WHERE для применения при удалении. Передача null удалит все строки.

Итак, давайте скажем, вы хотите удалить строку, где BOOK_ID 6 вы бы что-то вроде:

public boolean deleteTitle(String id) 
{ 
    return db.delete(DATABASE_TABLE, BOOK_ID + "=" + id, null) > 0; 
} 

SQLite Class Обзор: http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

+0

Я знал, что передача null на whereClause приведет к удалению всех строк, я всегда пишу в примере, потому что мне удалось это сделать. Ваш пример был очень полезен для меня, спасибо! – Tony

1

Для того, чтобы удалить определенные строки, вам нужно положить где положение в ВЕЬЕТЕ delete

1

Если проверить АНИ документы для этого метода может получить ответ самостоятельно.

public int delete (String table, String whereClause, String[] whereArgs) 

Parameters 

table the table to delete from 
whereClause the optional WHERE clause to apply when deleting. Passing null will delete all rows. 

Вы передаете значение null в where, которое является причиной удаления всех записей.

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