我的ActiveAndroid
数据库中有大约20-30个表。当我按logoutButton
时,我想清除所有表格。我怎样才能在ActiveAndroid
中完成?
public void logOut() {
//clear all tables
}
答案 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);
这似乎比我尝试的任何其他方法更有效。