如何清除 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);
这似乎比我尝试过的任何其他方法都更有效。
我的 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);
这似乎比我尝试过的任何其他方法都更有效。