¿Cómo puede borrar todas las tablas en ActiveAndroid?
Tengo cerca de 20-30 tablas en mi base de datos de ActiveAndroid
. Cuando logoutButton
Quiero borrar todas las tablas. ¿Cómo puedo hacerlo en 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); }
Prueba esto:
public void logOut() { new Delete().from(MyClass.class).executeSingle(); }
Espero que esto podría ayudar a alguien usando Active Android.
Para borrar todos los registros de una tabla hay una manera fácil.
1) Primero Crea la clase "TruncatableModel" y extiende todos tus Modelos a esta clase
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)); } }
.. así que después de extender, mi clase de modelo se vería como.
@Table(name = "note") public class Note extends TruncatableModel { @Column(name ="idn") public Integer idn; @Column(name ="title") public String title; ... }
2) Ahora puedo borrar todos los registros en la base de datos "nota" usando este código.
Note.truncate(Note.class);
Esto parece ser la manera más eficiente que cualquier otro método que he intentado.