2011-11-15 25 views
22

Chcę usunąć wszystkie wiersze, które wprowadziłem z mojej tabeli bazy danych SQLite. Nazwa tabeli brzmi: tbltask. Próbowałem upuścić tabelę i usunąć * z tabeli, ale te dają mi błędy w czasie wykonywania. Chcę uruchomić to wydarzenie w zdarzeniu Button OnClickListner.Usuń wszystkie wiersze tabeli z tabeli bazy danych SQLite

Poniższy kod jest co starałem:

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} 

To wyjście LogCat mam na następujące zapytanie:

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

Jakie błędy dostałeś? Opublikuj wynik logcat – dymmeh

+1

jaki jest błąd, który otrzymujesz ... po prostu spróbuj tego bez części rawquery. 'sqLiteDatabase.delete (MYDATABASE_TABLE, null, null);' – Rakhita

Odpowiedz

69

Wystarczy zrobić:

db.delete(DATABASE_TABLE, null, null); 

pamiętać, że korzystanie rawQuery powinny działać, ale może stanowić potencjalne zagrożenie bezpieczeństwa.

EDIT:

O problemie masz podczas korzystania

db.execSQL 

Przeczytaj documentation, to mówi, że nie powinno się używać execSQL z INSERT, DELETE, UPDATE lub SELECT

0

Konsensus jest spadek i odtworzyć tabelę lub można użyć DELETE FROM tbltask, która używa operacji wydajności podobnej do TRUNCATE na innych dbs.

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

Tutaj contacs to moja nazwa tabeli .. Wypróbuj .. To działa dla mnie ..

+0

To wyraźnie przeczy dokumentacji: "Wykonaj pojedyncze polecenie SQL, które NIE jest SELECT/INSERT/UPDATE/DELETE" – dm78

0

Usuń wszystkie wartości z tabeli bazy danych użyj tej metody w bazie danych.

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

to działa dobrze.

Powiązane problemy