如何清除 ActiveAndroid 中的所有表?

How can clear all tables in ActiveAndroid?

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

 public void logOut() {
     //clear all tables
 }
        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);
        }

试试这个:

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

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

要删除 table 中的所有记录,有一个简单的方法。

1) 首先创建 class "TruncatableModel" 并将所有模型扩展到此 class

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

.. 所以在扩展之后,我的模型 class 看起来像。

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

2) 现在我可以使用此代码删除 "note" 数据库中的所有记录。

Note.truncate(Note.class);

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