Moja aplikacja ma dwa przyciski, pierwszy służy do usuwania rekordów wprowadzonych przez użytkownika, a drugi do usuwania wszystkich rekordów. Ale kiedy chcę usunąć dane, wyświetla się komunikat
„Twoja aplikacja została zatrzymana na siłę”.
Sprawdź mój kod i daj mi jakieś sugestie.
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();
}
i
public void delete(String id)
{
String[] args={id};
getWritableDatabase().delete("texts", "_ID=?", args);
}
Ale pokazuje następujący błąd cat dziennika.
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)
Odpowiedzi:
Przegapiłeś spację:
db.execSQL("delete * from " + TABLE_NAME);
Nie ma też potrzeby dołączania
*
, poprawne zapytanie to:źródło
*
.lub jeśli chcesz, aby funkcja zwracała liczbę usuniętych wierszy ,
Z dokumentacji metody delete SQLiteDatabase :
źródło
Aby usunąć wszystkie wiersze w tabeli, możesz użyć:
źródło
SQLite nie obsługuje
TRUNCATE
polecenia. Powinieneś użyć tego, co wypróbowałeś w poprzedniej linii:PS Możesz zoptymalizować swój program, używając tej samej instancji połączenia z bazą danych dla wszystkich zapytań do danej bazy danych, zamiast tworzyć nowe dla każdego zapytania.
źródło
Nie ma potrzeby używania funkcji „execute”. Poniższy kod zadziałał dla mnie :::
źródło
ta praca dla mnie :)
źródło
wypróbuj ten kod, aby usunąć wszystkie dane z tabeli.
źródło
rawQuery()
nie działa, ponieważ nie wykonuje kodu SQL.użyj funkcji usuwania Sqlit z dwoma ostatnimi parametrami zerowymi.
źródło
Tylko napisz
lub
źródło
Używam tej klasy do obsługi bazy danych i mam nadzieję, że w przyszłości komuś to pomoże.
Miłego kodowania.
}
Stosowanie:
źródło
źródło
To działa dla mnie. Różnica jest tutaj z execSQL i rawQuery. RawQuery jest używane najczęściej w wyszukiwaniu przypadków, a execSQL najczęściej używane w operacjach stosowania.
źródło
źródło
Może się przydać.
źródło
ta metoda usuwa wszystkie dane z bazy danych
źródło
Mam funkcję, która działa dla mnie w Unity (w połączeniu z bazą danych SQLite).
kod C #:
źródło
Oto prosty sposób na usunięcie:
Tutaj
whereClause
jest opcjonalne, przekazanie wartości null spowoduje usunięcie wszystkich wierszy w tabeli. Funkcja delete zwróci numer wiersza, którego dotyczy problem, jeśli zostaniewhereClause
przekazana, w przeciwnym razie zwróci 0.źródło
możesz użyć dwóch różnych metod usuwania lub dowolnego zapytania w sqlite android
pierwsza metoda to
druga metoda
użyj dowolnej metody dla swojego przypadku użycia
źródło
Korzystanie z SQLite_NET_PCL v1.6.292 w VStudio - wiele dokumentów i komentarzy wydaje się przestarzałych (tak mi się wydaje).
Aby usunąć wszystkie rekordy
źródło