2011-11-15 34 views
22

Quiero eliminar todas las filas que ingresé de mi tabla de base de datos SQLite. El nombre de la tabla es tbltask. Intenté soltar la tabla y eliminar * de la tabla, pero esos me están dando errores de tiempo de ejecución. Quiero activar este evento en el evento Button OnClickListner.Eliminar todas las filas de la tabla de la base de datos SQLite

siguiente código es lo que he intentado:

String delete = "DELETE FROM "+DATABASE_TABLE; 
db.rawQuery(delete, null); 
db.delete(DATABASE_TABLE, null, null); 

LogCat:

11-15 17:45:04.660: DEBUG/AndroidRuntime(300): Shutting down VM 
11-15 17:45:04.660: WARN/dalvikvm(300): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): FATAL EXCEPTION: main 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): java.lang.NullPointerException 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): at database.com.android.DatabaseAccess.drop(DatabaseAccess.java:258) 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): at com.android.ExtraActivity$3$1.onClick(ExtraActivity.java:61) 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158) 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): at android.os.Looper.loop(Looper.java:123) 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): at android.app.ActivityThread.main(ActivityThread.java:4627) 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): at java.lang.reflect.Method.invokeNative(Native Method) 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): at java.lang.reflect.Method.invoke(Method.java:521) 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
11-15 17:45:04.710: ERROR/AndroidRuntime(300): at dalvik.system.NativeStart.main(Native Method) 
11-15 17:45:04.781: WARN/ActivityManager(58): Force finishing activity com.android/.ExtraActivity 
11-15 17:45:05.320: WARN/ActivityManager(58): Activity pause timeout for HistoryRecord{45061a70 com.android/.ExtraActivity} 
11-15 17:45:14.857: WARN/ActivityManager(58): Launch timeout has expired, giving up wake lock! 
11-15 17:45:15.402: WARN/ActivityManager(58): Activity idle timeout for HistoryRecord{450141d0 com.android/.WelcomActivity} 
11-15 17:45:20.572: WARN/ActivityManager(58): Activity destroy timeout for HistoryRecord{45061a70 com.android/.ExtraActivity} 

Ésta es la salida LogCat me pasa por consulta siguiente:

 String delete = "DELETE FROM taskTable"; 
    db.execSQL(delete); 
+1

¿Qué errores obtienes? Publique la salida de logcat – dymmeh

+1

cuál es el error que está recibiendo ... simplemente intente este sin la parte rawquery. 'sqLiteDatabase.delete (MYDATABASE_TABLE, null, null);' – Rakhita

Respuesta

69

Just Do:

db.delete(DATABASE_TABLE, null, null); 

Tenga en cuenta que el uso de rawQuery debería funcionar, pero puede ser un riesgo de seguridad potencial.

EDIT:

Sobre el problema que tiene cuando se utiliza

db.execSQL 

Lea la documentation, se dice que no se debe utilizar execSQL con INSERT, DELETE, UPDATE o SELECT

0

consenso es a caer y recree la tabla, o puede usar DELETE FROM tbltask que usa una operación de rendimiento similar a un TRUNCATE en otros dbs.

0
getWritableDatabase().execSQL("DELETE FROM " + "contacts" + ";"); 

Aquí contacs es el nombre de mi tabla ... Pruébalo ... Funciona para mí ...

+0

Esto contradice explícitamente la documentación: "Ejecutar una sola instrucción SQL que NO sea SELECT/INSERT/UPDATE/DELETE" – dm78

0

Borrar todos los valores de la tabla de la base de datos use este método en la base de datos.

private SQLiteDatabase odb; 
public void deleteallvalues(){ 
    odb.delete(TABLE_NAME,null,null) 
} 

this work fine.

Cuestiones relacionadas