2011-11-15 7 views
22

Tôi muốn xóa tất cả các hàng mà tôi đã nhập từ bảng cơ sở dữ liệu SQLite của mình. Tên bảng là tbltask. Tôi đã cố gắng để thả bảng và xóa * từ bảng, nhưng những người đang cho tôi lỗi thời gian chạy. Tôi muốn kích hoạt sự kiện này trong sự kiện Button OnClickListner.Xóa tất cả các hàng trong bảng khỏi bảng cơ sở dữ liệu SQLite

Sau code is những gì tôi đã cố gắng:

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} 

Đây là sản phẩm LogCat tôi nhận được cho sau đây truy vấn:

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

Bạn gặp phải lỗi nào? Đăng đầu ra logcat – dymmeh

+1

lỗi của bạn là gì .... chỉ cần thử cái này mà không có phần thô. 'sqLiteDatabase.delete (MYDATABASE_TABLE, null, null);' – Rakhita

Trả lời

69

Chỉ cần làm:

db.delete(DATABASE_TABLE, null, null); 

Lưu ý rằng việc sử dụng rawQuery nên làm việc, nhưng có thể là một nguy cơ bảo mật tiềm năng.

EDIT:

Về vấn đề bạn có khi bạn sử dụng

db.execSQL 

Đọc documentation, nó nói rằng bạn không nên sử dụng execSQL với INSERT, DELETE, UPDATE hay CHỌN

0

Đồng thuận là để thả và tạo lại bảng hoặc bạn có thể sử dụng DELETE FROM tbltask sử dụng thao tác hiệu suất tương tự như một TRUNCATE trên các dbs khác.

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

Đây là các bảng tính của tôi .. Hãy thử .. Nó hoạt động cho tôi ..

+0

Điều này mâu thuẫn rõ ràng với tài liệu: "Thực hiện một câu lệnh SQL đơn không phải là một SELECT/INSERT/UPDATE/DELETE" – dm78

0

Xóa tất cả các giá trị từ bảng cơ sở dữ liệu sử dụng phương thức này trong cơ sở dữ liệu.

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

hoạt động tốt này.