Meine App verfügt über zwei Schaltflächen. Die erste Schaltfläche dient zum Löschen von Datensätzen bei Benutzereingaben und die zweite Schaltfläche zum Löschen aller Datensätze. Wenn ich jedoch Daten löschen möchte, wird die Meldung
"Ihre Anwendung wurde gewaltsam gestoppt" angezeigt.
Bitte überprüfen Sie meinen Code und geben Sie mir einen Vorschlag.
public void deleteAll()
{
//SQLiteDatabase db = this.getWritableDatabase();
// db.delete(TABLE_NAME,null,null);
//db.execSQL("delete * from"+ TABLE_NAME);
db.execSQL("TRUNCATE table" + TABLE_NAME);
db.close();
}
und
public void delete(String id)
{
String[] args={id};
getWritableDatabase().delete("texts", "_ID=?", args);
}
Es wird jedoch der folgende Log cat-Fehler angezeigt.
03-07 15:57:07.143: ERROR/AndroidRuntime(287): Uncaught handler: thread main exiting due to uncaught exception
03-07 15:57:07.153: ERROR/AndroidRuntime(287): java.lang.NullPointerException
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at com.example.MySQLiteHelper.delete(MySQLiteHelper.java:163)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at com.example.Settings$4.onClick(Settings.java:94)
-07 15:57:07.153: ERROR/AndroidRuntime(287): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at android.os.Handler.dispatchMessage(Handler.java:99)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at android.os.Looper.loop(Looper.java:123)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at android.app.ActivityThread.main(ActivityThread.java:4203)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at java.lang.reflect.Method.invokeNative(Native Method)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at java.lang.reflect.Method.invoke(Method.java:521)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
03-07 15:57:07.153: ERROR/AndroidRuntime(287): at dalvik.system.NativeStart.main(Native Method)
Antworten:
Sie haben ein Leerzeichen verpasst:
db.execSQL("delete * from " + TABLE_NAME);
Es muss auch nicht einmal eingeschlossen werden
*
. Die richtige Abfrage lautet:quelle
*
.oder, wenn die Funktion die Anzahl der gelöschten Zeilen zurückgeben soll ,
Aus der Dokumentation von SQLiteDatabase Löschmethode:
quelle
So löschen Sie alle Zeilen in der Tabelle:
quelle
SQLite unterstützt den
TRUNCATE
Befehl nicht. Sie sollten das verwenden, was Sie in der vorherigen Zeile versucht haben:PS Sie können Ihr Programm optimieren, indem Sie für alle Ihre Abfragen zur angegebenen Datenbank dieselbe Instanz der Datenbankverbindung verwenden, anstatt für jede Abfrage eine neue zu erstellen.
quelle
Die Funktion "Ausführen" muss nicht verwendet werden. Der folgende Code hat bei mir funktioniert :::
quelle
diese Arbeit für mich :)
quelle
Versuchen Sie diesen Code, um alle Daten aus einer Tabelle zu löschen.
quelle
rawQuery()
allein funktioniert nicht, da SQL nicht ausgeführt wird.Verwenden Sie die Sqlit-Löschfunktion mit den letzten beiden Nullparametern.
quelle
Einfach schreiben
oder
quelle
Ich benutze diese Klasse, um mit Datenbanken umzugehen. Ich hoffe, sie wird in Zukunft jemandem helfen.
Viel Spaß beim Codieren.
}}
Verwendung:
quelle
quelle
Das funktioniert bei mir. Der Unterschied liegt hier bei execSQL und rawQuery. Die rawQuery wird am häufigsten in Suchfällen verwendet und execSQL wird hauptsächlich in Anwendungsoperationen verwendet.
quelle
quelle
Kann nützlich sein.
quelle
Diese Methode löscht alle Daten aus der Datenbank
quelle
Ich habe eine Funktion, die für mich in Unity funktioniert (in Verbindung mit der Datenbank SQLite).
Code C #:
quelle
Hier ist eine einfache Möglichkeit zum Löschen:
Hier
whereClause
ist optional, wenn Sie null übergeben, werden alle Zeilen in der Tabelle gelöscht. Die Löschfunktion gibt die Anzahl der betroffenen Zeilen zurück, wenn siewhereClause
übergeben wird. Andernfalls wird 0 zurückgegeben.quelle
Sie können zwei verschiedene Methoden verwenden, um oder jede Abfrage in SQLite Android zu löschen
erste Methode ist
zweite Methode
Verwenden Sie eine beliebige Methode für Ihren Anwendungsfall
quelle
Verwenden von SQLite_NET_PCL v1.6.292 in VStudio - viele der Dokumente und Kommentare scheinen veraltet zu sein (glaube ich).
Alle Datensätze löschen
quelle