2010-06-22 11 views
9

Estoy tratando de escribir una función que eliminará cada fila en una tabla determinada, pero obtengo una excepción de puntero nulo. ¿Podría alguien señalarme en la dirección correcta? Aquí está el código ...Eliminar todas las filas de una tabla, arroja nullpointer

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

     } 

Respuesta

57

Comprobar si tweets es nulo.

Creo que es más simple utilizar esta llamada que usar rawQuery. Su rawQuery debe ser analizada, pero utilizando el método de eliminación ya utiliza una consulta parametrizada.

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

Aún así conseguir un NullPointer, estoy usando el método de recuento que me ayudaron con en otra pregunta para verificar si las filas> 1 si es entonces estoy ejecutando ese método. Pero todavía estoy obteniendo un puntero nulo, supongo que estoy haciendo esto de la manera incorrecta ... ¿es una mejor manera de verificar una tabla nula? – Skizit

+0

Compruebe 'adb logcat' o' ddms' para ver qué causa el puntero nulo. Creo que tienes algunas otras cosas nulas allí. http://www.brighthub.com/mobile/google-android/articles/25023.aspx – Pentium10

0

SQLite no tiene ninguna declaración TRUNCATE, por lo que debe hacer:

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

solo para eliminar todas las filas, puede usar el siguiente método. void deleteAll() \t { \t \t SQLiteDatabase db = this.getWritableDatabase(); \t \t db.delete (table_name, null, null); \t \t} –

11

sólo para eliminar todas las filas, puede utilizar el método siguiente.

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

Por favor, explique su código. – hims056

1

que era conseguir una excepción de puntero nulo, y luego me di cuenta de que mi método no estaba llamando db.open() primero. Agregó eso (y db.close()) y funcionó.

0

Al establecer el segundo parámetro en null, se eliminan todas las filas.

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 
} 

El código de arriba era solo una ilustración. Esto sólo se puede simplificar a

public int deleteAllRowsInTable() { 

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

La respuesta correcta es la siguiente:

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

Desde Android documentación oficial: SQLiteDatabase

Cuestiones relacionadas