web-dev-qa-db-ja.com

SQLiteデータベーステーブルからすべてのテーブル行を削除する

入力したすべての行をSQL​​iteデータベーステーブルから削除したい。テーブル名は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);
22
tharindlaksh

ただやる:

db.delete(DATABASE_TABLE, null, null);

RawQueryを使用しても動作するはずですが、潜在的なセキュリティリスクになる可能性があることに注意してください。

編集:

使用時に発生する問題について

db.execSQL

ドキュメント を読んでください。INSERTSQL、DELETE、UPDATE、またはSELECTでexecSQLを使用しないでください。

69
Matthieu

データベーステーブルからすべての値を削除するには、データベースでこのメソッドを使用します。

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

これで問題ありません。

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

ここにcontacsが私のテーブル名です。試してみてください。

0
Debarati

コンセンサスは、テーブルを削除して再作成することです。または、DELETE FROM tbltaskこれは、他のデータベースのTRUNCATEと同様のパフォーマンス操作を使用します。

0
Pedantic