2010-06-22 5 views
9

J'essaye d'écrire une fonction qui supprimera chaque rangée dans une table donnée mais j'obtiens une exception de pointeur nulle. Quelqu'un pourrait-il me diriger dans la bonne direction? Voici le code ...Supprimer toutes les lignes d'une table, jette nullpointer

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

     } 

Répondre

57

Vérifiez si tweets est nulle.

Je pense qu'il est plus simple d'utiliser cet appel que d'utiliser rawQuery. Votre fichier rawQuery doit être analysé, mais en utilisant la méthode delete, il utilise déjà une requête paramétrée.

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

toujours d'obtenir un nullpointer, j'utilise la méthode de comptage vous m'a aidé avec dans une autre question de vérifier si les lignes> 1 si c'est alors j'exécute cette méthode. Mais je reçois toujours un pointeur nul, je suppose que je vais à ce sujet dans le mauvais sens .. est-ce un meilleur moyen de vérifier une table nulle? – Skizit

+0

Vérifiez le 'adb logcat' ou' ddms' pour voir ce qui provoque le pointeur nul. Je pense que vous avez d'autres choses nulles là-bas. http://www.brighthub.com/mobile/google-android/articles/25023.aspx – Pentium10

0

SQLite n'a pas de déclaration TRUNCATE, vous devez faire:

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

juste pour supprimer toutes les lignes, vous pouvez utiliser la méthode suivante. deleteAll void() { \t \t \t SQLiteDatabase db = this.getWritableDatabase(); Db.delete (nom_table, null, null) \t \t; \t \t} –

11

juste pour supprimer toutes les lignes, vous pouvez utiliser la méthode suivante.

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

Veuillez expliquer votre code. – hims056

1

Je recevais une exception de pointeur nul, et je réalise que ma méthode ne demande pas db.open() d'abord. Ajouté que (et db.close()) et cela a fonctionné.

0

La définition du deuxième paramètre sur null supprime toutes les lignes.

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 
} 

Le code ci-dessus était à titre d'illustration. Cela peut simplement être simplifié pour

public int deleteAllRowsInTable() { 

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

La bonne réponse est la suivante:

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

De la documentation officielle Android: SQLiteDatabase

Questions connexes