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);
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.
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.
getWritableDatabase().execSQL("DELETE FROM " + "contacts" + ";");
Ici, contacs est le nom de ma table .. Essayez-le..Cela fonctionne pour moi ..
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.