Удалите все строки из таблицы, выбрасывает nullpointer

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

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

Solutions Collecting From Web of "Удалите все строки из таблицы, выбрасывает nullpointer"

Проверьте, нет ли tweets .

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

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

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

 void deleteAll() { SQLiteDatabase db= this.getWritableDatabase(); db.delete(table_name, null, null); } 
  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; } 

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

SQLite не имеет инструкции TRUNCATE , поэтому вы должны:

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

Установка второго параметра в значение 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; } 

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

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

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