2011-11-15 19 views
22

मैं अपनी SQLite डेटाबेस तालिका से दर्ज की गई सभी पंक्तियों को हटाना चाहता हूं। तालिका का नाम tbltask है। मैंने तालिका छोड़ने और तालिका से * हटाने की कोशिश की, लेकिन वे मुझे रनटाइम त्रुटियां दे रहे हैं। मैं इस घटना को बटन ऑनक्लिक लिस्टनर ईवेंट में ट्रिगर करना चाहता हूं।SQLite डेटाबेस तालिका से सभी तालिका पंक्तियां हटाएं

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); 
+1

आपको क्या त्रुटियां मिलती हैं? लॉगकैट आउटपुट – dymmeh

+1

पोस्ट करें जो आपको मिल रही है .... बस कच्चे माल के बिना इसे आज़माएं। 'sqLiteDatabase.delete (MYDATABASE_TABLE, शून्य, शून्य);' – Rakhita

उत्तर

69

बस कार्य करें:

db.delete(DATABASE_TABLE, null, null); 

ध्यान दें कि rawQuery का उपयोग कर काम करना चाहिए, लेकिन एक संभावित सुरक्षा जोखिम हो सकता है।

संपादित करें:

समस्या के बारे में आप जब आप

db.execSQL 

का उपयोग पढ़ें documentation है, यह कहते हैं कि आप सम्मिलित साथ execSQL का उपयोग करना चाहिए नहीं, हटाएँ, अद्यतन या चयन

0

आम सहमति ड्रॉप करने के लिए है और

कोड के बाद

मैं क्या करने की कोशिश की है तालिका को फिर से बनाएं, या आप DELETE FROM tbltask का उपयोग कर सकते हैं जो TRUNCATE के समान प्रदर्शन ऑपरेशन का उपयोग करता है अन्य डीबीएस पर।

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

यहां contacs मेरा टेबल नाम है .. इसे आज़माएं .. यह मेरे लिए काम करता है ..

+0

यह स्पष्ट रूप से प्रलेखन के विपरीत है: "एक एकल SQL कथन निष्पादित करें जो कोई चयन/INSERT/अद्यतन/हटाएं नहीं है" – dm78

0

डेटाबेस तालिका से सभी मान हटाएं डेटाबेस में इस विधि का उपयोग करें।

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

यह काम ठीक है।

संबंधित मुद्दे