2010-06-22 15 views
9

Sto provando a scrivere una funzione che cancellerà ogni riga in una determinata tabella ma sto ricevendo un'eccezione di puntatore nullo. Qualcuno potrebbe indicarmi la giusta direzione? Ecco il codice ...Elimina tutte le righe da una tabella, genera nullpointer

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

     } 

risposta

57

Verificare se tweets è nullo.

Penso che sia più semplice usare questa chiamata, che usare rawQuery. Il rawquery deve essere analizzato, ma utilizzando il metodo delete utilizza già una query parametrizzata.

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

Ancora ottenere un nullpointer, sto usando il metodo di conteggio che mi ha aiutato con in un'altra domanda per controllare se le righe> 1 se è allora sto eseguendo quel metodo. Ma sto ancora ottenendo un puntatore nullo, presumo che sto andando su questo nel modo sbagliato .. è il loro un modo migliore per verificare la presenza di una tabella nulla? – Skizit

+0

Controllare 'adb logcat' o' ddms' per vedere cosa causa il puntatore nullo. Penso che tu abbia altre cose nulle lì. http://www.brighthub.com/mobile/google-android/articles/25023.aspx – Pentium10

0

SQLite non ha alcun TRUNCATE affermazione, quindi è necessario fare:

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

solo per eliminare tutte le righe, è possibile utilizzare il seguente metodo. vuoto CancTutti() { \t \t \t SQLiteDatabase db = this.getWritableDatabase(); \t \t db.delete (table_name, null, null); \t \t} –

11

solo per eliminare tutte le righe, è possibile utilizzare il metodo seguente.

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

Spiegare il codice. – hims056

1

mi è stato sempre un'eccezione di puntatore nullo, e poi ho capito che il mio metodo non stava chiamando db.open() prima. Aggiunto questo (e db.close()) e ha funzionato.

0

L'impostazione del secondo parametro su null cancella tutte le righe.

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 
} 

Il suddetto codice era per illustrazione. Questo può solo essere semplificata per

public int deleteAllRowsInTable() { 

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

La risposta giusta è questo:

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

da Android documentazione ufficiale: SQLiteDatabase

Problemi correlati