卸下SQLite数据库表中的所有表行 [英] Remove all table rows from SQLite database table

查看:102
本文介绍了卸下SQLite数据库表中的所有表行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要删除我从我SQLite数据库表中输入的所有行。表名是 tbltask 。 我试图删除表,并删除*从表中,但这些都是给我的运行时错误。 我想触发此事件的按钮OnClickListner事件。

随着code是我的尝试:

 字符串删除=DELETE FROM+ DATABASE_TABLE;
db.rawQuery(删除,NULL);
db.delete(DATABASE_TABLE,NULL,NULL);
 

LogCat中:

  11-15 17:45:04.660:DEBUG / AndroidRuntime(300):关闭虚拟机
11-15 17:45:04.660:WARN / dalvikvm(300):主题ID = 1:螺纹退出与未捕获的异常(组= 0x4001d800)
11-15 17:45:04.710:ERROR / AndroidRuntime(300):致命异常:主要
11-15 17:45:04.710:ERROR / AndroidRuntime(300):显示java.lang.NullPointerException
11-15 17:45:04.710:ERROR / AndroidRuntime(300):在database.com.android.DatabaseAccess.drop(DatabaseAccess.java:258)
11-15 17:45:04.710:ERROR / AndroidRuntime(300):在com.android.ExtraActivity $ 3 $ 1.onClick(ExtraActivity.java:61)
11-15 17:45:04.710:ERROR / AndroidRuntime(300):在com.android.internal.app.AlertController $ ButtonHandler.handleMessage(AlertController.java:158)
11-15 17:45:04.710:ERROR / AndroidRuntime(300):在android.os.Handler.dispatchMessage(Handler.java:99)
11-15 17:45:04.710:ERROR / AndroidRuntime(300):在android.os.Looper.loop(Looper.java:123)
11-15 17:45:04.710:ERROR / AndroidRuntime(300):在android.app.ActivityThread.main(ActivityThread.java:4627)
11-15 17:45:04.710:ERROR / AndroidRuntime(300):在java.lang.reflect.Method.invokeNative(本机方法)
11-15 17:45:04.710:ERROR / AndroidRuntime(300):在java.lang.reflect.Method.invoke(Method.java:521)
11-15 17:45:04.710:ERROR / AndroidRuntime(300):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:868)
11-15 17:45:04.710:ERROR / AndroidRuntime(300):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-15 17:45:04.710:ERROR / AndroidRuntime(300):在dalvik.system.NativeStart.main(本机方法)
11-15 17:45:04.781:警告/ ActivityManager(58):强制完成活动com.android/.ExtraActivity
11-15 17:45:05.320:WARN / ActivityManager(58):活动暂停超时HistoryRecord {45061a70 com.android/.ExtraActivity}
11-15 17:45:14.857:WARN / ActivityManager(58):启动超时已过期,放弃唤醒锁!
11-15 17:45:15.402:WARN / ActivityManager(58):活动空闲超时时间为HistoryRecord {450141d0 com.android/.WelcomActivity}
11-15 17:45:20.572:WARN / ActivityManager(58):活动破坏超时HistoryRecord {45061a70 com.android/.ExtraActivity}
 

这是LogCat中输出,我得到了下面的查询:

 字符串删除=DELETE FROM taskTable;
    db.execSQL(删除);
 

解决方案

只要做到:

  db.delete(DATABASE_TABLE,NULL,NULL);
 

请注意,使用rawQuery应该工作,但也可以是一个潜在的安全风险。

编辑:

关于这个问题,你必须在使用

  db.execSQL
 

阅读<一个href="http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#execSQL%28java.lang.String,%20java.lang.Object%5B%5D%29">documentation,它说你不应该使用execSQL用INSERT,DELETE,UPDATE或SELECT

I want to remove all rows that i entered from my SQLite database table. The table name is tbltask. I tried to drop the table and delete * from table, but those are giving me runtime errors. I want to trigger this event in Button OnClickListner event.

Following code is what I tried:

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}

This is the LogCat output I get for following query:

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

解决方案

Just do:

db.delete(DATABASE_TABLE, null, null);

Note that using rawQuery should work, but can be a potential security risk.

EDIT:

About the problem you have when you use

db.execSQL

Read the documentation, it says you should not use execSQL with INSERT, DELETE, UPDATE or SELECT

这篇关于卸下SQLite数据库表中的所有表行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆