2010-06-22 6 views
9

Я пытаюсь написать функцию, которая удалит каждую строку в данной таблице, но я получаю исключение из нулевого указателя. Может ли кто-нибудь указать мне в правильном направлении? Вот код ...Удалите все строки из таблицы, бросает nullpointer

public void deleteall(){ 
    SQLiteDatabase db = tweets.getWritableDatabase(); 
    String delete = "TRUNCATE FROM tweets"; 
    db.rawQuery(delete, null); 

     } 

ответ

57

Проверьте tweets является недействительным.

Я думаю, что проще использовать этот вызов, чем использовать rawQuery. Ваш rawQuery должен быть проанализирован, но с использованием метода delete он использует уже параметризованный запрос.

db.delete('tweets',null,null); 
+2

Тем не менее получение NullPointer, я использую метод подсчета вы помогли мне в другом вопросе, чтобы проверить, если строки> 1, если это тогда, я выполняю этот метод. Но я все еще получаю нулевой указатель, я предполагаю, что я об этом поступил неправильно ... это лучший способ проверить нулевую таблицу? – Skizit

+0

Проверьте 'adb logcat' или' ddms', чтобы узнать, что вызывает нулевой указатель. Я думаю, что у вас есть кое-что другое. http://www.brighthub.com/mobile/google-android/articles/25023.aspx – Pentium10

0

SQLite не имеет никакого TRUNCATE заявления, так что вы должны сделать:

public void deleteall(){ 
    SQLiteDatabase db = tweets.getWritableDatabase(); 
    String delete = "DELETE FROM tweets"; 
    db.rawQuery(delete, null); 
} 
+0

, чтобы удалить все строки, вы можете использовать следующий метод. недействительными DeleteAll() \t { \t \t SQLiteDatabase дБ = this.getWritableDatabase(); \t \t db.delete (table_name, null, null); \t \t} –

11

просто удалить все строки, вы можете использовать следующий метод.

void deleteAll() 
{ 
    SQLiteDatabase db= this.getWritableDatabase(); 
    db.delete(table_name, null, null); 

} 
1
dataBaseHelper = new DataBaseHelper(getApplicationContext(), DataBaseHelper.DataBaseName, null, 1); 
    sqLiteDatabase = dataBaseHelper.getWritableDatabase(); 
    if (sqLiteDatabase != null) { 
     sqLiteDatabase.delete(DataBaseHelper.TableName, null, null); 
     Toast.makeText(MainActivity.this, "Refresh", Toast.LENGTH_SHORT).show(); 
    } else 
     Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show(); 
    break; 
} 
+1

Пожалуйста, объясните ваш код. – hims056

1

я получаю исключение нулевого указателя, а затем я понял, что мой метод не звал db.open() первыми. Добавлено что (и db.close()), и это сработало.

0

Установка второго параметра на null удаляет все строки.

public int deleteAllRowsInTable() { 

    SQLiteDatabase db = helper.getWritableDatabase(); // helper = MyDatabaseHelper 
    String whereClause = null; // delete all rows 
    String[] whereArgs = { null }; 
    int count = db.delete(MyDatabaseHelper.TABLE_NAME, whereClause, whereArgs); 
    db.close(); // don't forget to close the database 
    return count; // number of rows affected 
} 

Приведенный выше код был для иллюстрации. Это может просто быть упрощена

public int deleteAllRowsInTable() { 

    SQLiteDatabase db = helper.getWritableDatabase(); 
    int count = db.delete(MyDatabaseHelper.TABLE_NAME, null, null); 
    db.close(); 
    return count; 
} 
0

Правильный ответ:

db.delete('tweets',"1",null); 

Из Android официальной документации: SQLiteDatabase

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