Удалить все строки таблицы из таблицы базы данных SQLite
Я хочу удалить все строки, которые я ввел из моей таблицы базы данных SQLite. Имя таблицы tbltask. Я попытался удалить таблицу и удалить * из таблицы, но они дают мне ошибки выполнения. Я хочу вызвать это событие в событии Button OnClickListner.
следующий код-это то, что я пробовал:
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.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}
это вывод LogCat, который я получаю для следующего запроса:
String delete = "DELETE FROM taskTable";
db.execSQL(delete);
4 ответов
Так же:
db.delete(DATABASE_TABLE, null, null);
обратите внимание, что использование rawQuery должно работать, но может быть потенциальной угрозой безопасности.
EDIT:
о проблеме, которую вы имеете при использовании
db.execSQL
читать документация, он говорит, что вы не должны использовать execSQL с INSERT, DELETE, UPDATE или SELECT
консенсус должен отбросить и воссоздать таблицу, или вы можете использовать DELETE FROM tbltask
который использует операцию производительности, аналогичную усечению на других dbs.
getWritableDatabase().execSQL("DELETE FROM " + "contacts" + ";");
здесь contacs-это мое имя таблицы.. Попробуйте...это работает для меня..
удалить все значения из базы данных, используйте этот метод в базе данных.
private SQLiteDatabase odb;
public void deleteallvalues(){
odb.delete(TABLE_NAME,null,null)
}
это работает нормально.