如何清除ActiveAndroid中的所有表?

时间:2015-05-21 03:53:19

标签: android activeandroid

我的ActiveAndroid数据库中有大约20-30个表。当我按logoutButton时,我想清除所有表格。我怎样才能在ActiveAndroid中完成?

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

3 个答案:

答案 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);
        }

答案 1 :(得分:5)

试试这个:

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

答案 2 :(得分:0)

希望这可以帮助使用Active Android的人。

删除表中的所有记录有一种简单的方法。

1)首先创建类&#34; TruncatableModel&#34;并将所有模型扩展到此类

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)现在我可以删除&#34;注意&#34;中的所有记录。数据库使用此代码。

Note.truncate(Note.class);

这似乎比我尝试的任何其他方法更有效。