Удаление из базы данных Android SQLite - PullRequest
1 голос
/ 03 апреля 2012

Вопрос


Я пытаюсь использовать кнопку для удаления первой записи в моей базе данных. Я думал, что у меня был правильный код, но он, кажется, не удаляет какие-либо данные, когда нажата кнопка удаления, android настроен так, как этот метод onClick: -

public void delete(View view)
 {
     datasource.open();
     datasource.deleteTitle(0);
     datasource.close();
 }

метод удаления, который он вызывает - вот этот метод: -

 public boolean deleteTitle(long rowId) 
{
    return db.delete(DATABASE_TABLE, KEY_ROWID + 
            "=" + rowId, null) > 0;
}

Есть ли другой способ, которым я должен делать это?

Кнопка настроена так: -

   <Button
        android:id="@+id/delete"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Delete First" 
        android:onClick="delete"/>

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

Решение:


Из принятого ответа я взял в нем код и создал вызов в именах классов DatabaseHelper, которые сначала удаляют. Код, который я использовал, был: -

public void deleteFirst()
{
    Cursor cursor = db.query(DATABASE_TABLE, null, null, null, null, null, null); 

    if(cursor.moveToFirst()) {
        long rowId = cursor.getLong(cursor.getColumnIndex(KEY_ROWID)); 

        db.delete(DATABASE_TABLE, KEY_ROWID +  "=" + rowId, null);
   }
}

и затем я изменил код, который я дал выше:

public void delete(View view)
 {
     datasource.open();
     datasource.deleteFirst();
     fillData();
     datasource.close();
 }

с методом fillData(), обновляющим представление.

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

Первая запись в базе данных не всегда будет иметь идентификатор «0». Каждый раз, когда вы вставляете новую запись, первичный ключ будет увеличиваться на 1. Итак, вам нужно получить идентификатор первой записи и выполнить удаление с использованием этого идентификатора.

Cursor cursor = db.query(DATABASE_TABLE, null, null, null, null, null, null); 

    if(cursor.moveToFirst()) {
        long rowId = cursor.getLong(cursor.getColumnIndex(KEY_ROWID)); 

        db.delete(DATABASE_TABLE, KEY_ROWID +  "=" + rowId, null);
   }
0 голосов
/ 03 апреля 2012

прекратите беспокоиться о sql и используйте greenDAO :) очень простой, супер легкий и легкий sqllite-фреймворк для Android

http://greendao -orm.com /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...