android - 从 SQLite 数据库表中删除所有表行

标签 android sqlite sql-delete

我想删除我从我的 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$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}

这是我为以下查询得到的 LogCat 输出:

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

最佳答案

只要做:

db.delete(DATABASE_TABLE, null, null);

请注意,使用 rawQuery 应该可以工作,但可能存在潜在的安全风险。

编辑:

关于您使用时遇到的问题

db.execSQL

阅读 documentation ,它说您不应该将 execSQL 与 INSERT、DELETE、UPDATE 或 SELECT 一起使用

关于android - 从 SQLite 数据库表中删除所有表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8131526/

相关文章:

objective-c - sqlite3_prepare_v2 exc_bad_access

sql - 仅在 SQL 中根据条件删除表中的重复项

android - 唯一联系 ID

android - 如何使用社交授权库在 linkedin 和 twitter 上分享

android - 从 AsyncTask 中的 doInBackground 方法检索返回语句?

java - Android Studio 单元测试 SQLiteDataBase 为空

javascript - Android 上的 PhoneGap 不会加载外部脚本

c++ - Qt 无法打开文件 'sqlite3.lib'

php - 我无法从 MySQL 数据库中删除一行

c# - 删除具有特定列的最高值的行