web-dev-qa-db-fra.com

Supprimer toutes les lignes de la table de la base de données SQLite

Je veux supprimer toutes les lignes que j'ai entrées de ma table de base de données SQLite. Le nom de la table est tbltask . J'ai essayé de supprimer la table et de supprimer * de la table, mais cela me donne des erreurs d'exécution . Je veux déclencher cet événement dans l'événement Button OnClickListner.

Le code suivant est ce que j'ai essayé:

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}

Voici la sortie LogCat que je reçois pour la requête suivante:

        String delete = "DELETE FROM taskTable";
    db.execSQL(delete);
22
tharindlaksh

Il suffit de faire:

db.delete(DATABASE_TABLE, null, null);

Notez que l'utilisation de rawQuery devrait fonctionner, mais peut constituer un risque potentiel pour la sécurité.

MODIFIER:

À propos du problème que vous avez lorsque vous utilisez

db.execSQL

Lisez la documentation , elle indique que vous ne devez pas utiliser execSQL avec INSERT, DELETE, UPDATE ou SELECT.

70
Matthieu

Supprimer toutes les valeurs de la table de base de données utilise cette méthode dans la base de données.

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

cela fonctionne bien.

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

Ici, contacs est le nom de ma table .. Essayez-le..Cela fonctionne pour moi ..

0
Debarati

Le consensus consiste à supprimer et à recréer la table, ou vous pouvez utiliser DELETE FROM tbltask qui utilise une opération de performance similaire à TRUNCATE sur d'autres dbs.

0
Pedantic