2010-06-22 23 views
9

फेंकता है मैं एक ऐसा फ़ंक्शन लिखने की कोशिश कर रहा हूं जो किसी दिए गए तालिका में प्रत्येक पंक्ति को हटा देगा लेकिन मुझे शून्य सूचक अपवाद मिल रहा है। क्या कोई मुझे सही दिशा में इंगित कर सकता है? यहाँ कोडकिसी तालिका से सभी पंक्तियों को हटाएं, nullpointer

public void deleteall(){ 
    SQLiteDatabase db = tweets.getWritableDatabase(); 
    String delete = "TRUNCATE FROM tweets"; 
    db.rawQuery(delete, null); 

     } 

उत्तर

57

चेक अगर tweets रिक्त है है ...।

मुझे लगता है कि कच्चेQuery का उपयोग करने के बजाय, इस कॉल का उपयोग करना अधिक आसान है। आपके rawQuery को पार्स किया जाना चाहिए, लेकिन डिलीट विधि का उपयोग करके यह पहले से ही एक parametrized क्वेरी का उपयोग करता है।

db.delete('tweets',null,null); 
+2

फिर भी एक nullpointer हो रही है, मैं गणना विधि का उपयोग कर रहा है कि तुम मुझे मदद की पंक्तियों को जांचने के लिए एक और प्रश्न के साथ> 1 यदि यह है तो मैं उस विधि को निष्पादित कर रहा हूं। लेकिन मुझे अभी भी एक नल पॉइंटर मिल रहा है, मुझे लगता है कि मैं इस बारे में गलत तरीके से जा रहा हूं .. क्या यह एक नल टेबल की जांच करने का एक बेहतर तरीका है? – Skizit

+0

नल पॉइंटर का कारण क्या है यह देखने के लिए 'adb logcat' या' ddms' जांचें। मुझे लगता है कि आपके पास कुछ और सामान शून्य है। http://www.brighthub.com/mobile/google-android/articles/25023.aspx – Pentium10

0

SQLite तो आप क्या करना चाहिए किसी भी TRUNCATE बयान नहीं है,:

public void deleteall(){ 
    SQLiteDatabase db = tweets.getWritableDatabase(); 
    String delete = "DELETE FROM tweets"; 
    db.rawQuery(delete, null); 
} 
+0

बस सभी पंक्तियों को हटाने के लिए, आप निम्न विधि का उपयोग कर सकते हैं। शून्य हटाएं सभी() \t { \t \t SQLiteDatabase db = this.getWritableDatabase(); \t \t db.delete (table_name, null, null); \t \t} –

11

सिर्फ सभी पंक्तियों को हटाने के लिए, आप विधि निम्न का उपयोग कर सकते हैं।

void deleteAll() 
{ 
    SQLiteDatabase db= this.getWritableDatabase(); 
    db.delete(table_name, null, null); 

} 
1
dataBaseHelper = new DataBaseHelper(getApplicationContext(), DataBaseHelper.DataBaseName, null, 1); 
    sqLiteDatabase = dataBaseHelper.getWritableDatabase(); 
    if (sqLiteDatabase != null) { 
     sqLiteDatabase.delete(DataBaseHelper.TableName, null, null); 
     Toast.makeText(MainActivity.this, "Refresh", Toast.LENGTH_SHORT).show(); 
    } else 
     Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show(); 
    break; 
} 
+1

कृपया अपना कोड समझाएं। – hims056

1

मैं एक नल पॉइंटर एक्सेप्शन हो रही थी, और उसके बाद मैंने महसूस किया कि मेरी विधि बुला नहीं किया गया था db.open() पहले। जोड़ा गया (और db.close()) और यह काम किया।

0

दूसरे पैरामीटर को null पर सेट करने से सभी पंक्तियां हटा दी जाती हैं।

public int deleteAllRowsInTable() { 

    SQLiteDatabase db = helper.getWritableDatabase(); // helper = MyDatabaseHelper 
    String whereClause = null; // delete all rows 
    String[] whereArgs = { null }; 
    int count = db.delete(MyDatabaseHelper.TABLE_NAME, whereClause, whereArgs); 
    db.close(); // don't forget to close the database 
    return count; // number of rows affected 
} 

उपरोक्त कोड चित्रण के लिए था। यह सिर्फ

public int deleteAllRowsInTable() { 

    SQLiteDatabase db = helper.getWritableDatabase(); 
    int count = db.delete(MyDatabaseHelper.TABLE_NAME, null, null); 
    db.close(); 
    return count; 
} 
0

को सरल किया जा सकता सही जवाब यह है:

db.delete('tweets',"1",null); 

एंड्रॉयड आधिकारिक दस्तावेज से: SQLiteDatabase

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