2015-05-21 4 views
6

मेरे पास ActiveAndroid डेटाबेस में लगभग 20-30 टेबल हैं। जब मैं logoutButton दबाता हूं तो मैं सभी तालिकाओं को साफ़ करना चाहता हूं। मैं इसे ActiveAndroid में कैसे कर सकता हूं?ActiveAndroid में सभी तालिकाओं को कैसे साफ़ कर सकते हैं?

public void logOut() { 
    //clear all tables 
} 
+0

आप एक पूर्ण समाधान के लिए पूछ रहे हैं। यह Stackoverflow पर प्रोत्साहित किया जाता है। इसके बजाए, अपना कोड लिखें और जब आपको कोई समस्या आती है, (1) किसी उत्तर की खोज करें, (2) केवल पूछें कि क्या आपको यह नहीं मिला है। –

+1

मैं एक विशिष्ट सवाल पूछता हूं। आधार को साफ करने के लिए कैसे। – ip696

+0

डेटाबेस फ़ाइल हटाएं –

उत्तर

10
 SQLiteDatabase db = ActiveAndroid.getDatabase(); 
     List<String> tables = new ArrayList<>(); 
     Cursor cursor = db.rawQuery("SELECT * FROM sqlite_master WHERE type='table';", null); 
     cursor.moveToFirst(); 
     while (!cursor.isAfterLast()) { 
      String tableName = cursor.getString(1); 
      if (!tableName.equals("android_metadata") && 
        !tableName.equals("sqlite_sequence")) { 
       tables.add(tableName); 
      } 
      cursor.moveToNext(); 
     } 
     cursor.close(); 
     for (String tableName : tables) { 
      db.execSQL("DELETE FROM " + tableName); 
     } 
+0

अच्छा। मेरे पास मेरे टेबल के सभी नाम हैं। मैं इस टेबल को कैसे साफ़ कर सकता हूं? – ip696

+0

क्षमा करें, –

+0

को हटाने में भूलना भूल गया है मुझे एक 'SQLiteConstraintException' मिल रहा है क्योंकि मेरे पास मेरी कुछ तालिकाओं के बीच एक विदेशी कुंजी है। इसे संभालने के लिए कोई समाधान? –

5

इस प्रयास करें:

public void logOut() { 
    new Delete().from(MyClass.class).executeSingle(); 
} 
+1

35 वर्ग में ???????? – ip696

+1

फिर अपना डीबी -> this.deleteDatabase ("your_db") हटाएं; – jlopez

0

आशा इस कोई सक्रिय Android का उपयोग कर मदद कर सकता है।

तालिका में सभी रिकॉर्ड्स हटाने के लिए एक आसान तरीका है।

1) प्रथम श्रेणी "TruncatableModel" बना सकते हैं और इस वर्ग के

public abstract class TruncatableModel extends Model { 
    public static void truncate(Class<? extends Model> type){ 
     final String tableName = Cache.getTableInfo(type).getTableName(); 

     // Delete all rows from table 
     ActiveAndroid.execSQL(String.format("DELETE FROM %s;", tableName)); 

     // Reset ids 
     ActiveAndroid.execSQL(String.format("DELETE FROM sqlite_sequence WHERE name='%s';", tableName)); 
    } 
} 

के लिए अपने सभी मॉडल का विस्तार .. इतना विस्तार के बाद, अपने मॉडल वर्ग की तरह लग रहे हैं।

@Table(name = "note") 
public class Note extends TruncatableModel { 
    @Column(name ="idn") 
    public Integer idn; 
    @Column(name ="title") 
    public String title; 
    ... 
} 

2) अब मैं इस कोड का उपयोग कर "नोट" डेटाबेस में सभी रिकॉर्ड्स हटा सकता हूं।

Note.truncate(Note.class); 

यह किसी भी अन्य तरीकों की तुलना में अधिक कुशल तरीका प्रतीत होता है।

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