在我的Android应用中,我使用ORMLite将数据存储到本地数据库中,当使用onUpgrade()
方法向该数据库添加列时,我获取该表的所有数据被删除。
我使用ORMLite文档中提到的upgrade schema方式:
private static final int DATABASE_VERSION = 10;
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int oldVer, int newVer) {
try {
if(oldVer < 10){
getGuardiansDao().executeRaw("ALTER TABLE `messages` ADD COLUMN updated_by TEXT;");
getGuardiansDao().executeRaw("ALTER TABLE `messages` ADD COLUMN updated_by_time TEXT;");
}
} catch (SQLException e) {
Log.e(DBManager.class.getName(), "Unable to upgrade database from version " + oldVer + " to new "
+ newVer, e);
}
}
在分配给该表的类中:
@DatabaseTable(tableName = "messages")
public class Message extends Object implements Parcelable{
.
.
.
@DatabaseField
private String updatedBy;
@DatabaseField
private String updatedByTime;
}
现在执行后,它会删除表messages
中存储的所有数据,但我不知道为什么会发生这种情况。
答案 0 :(得分:0)
现在执行后,它会删除存储在表格消息中的所有数据,而且我不知道为什么会发生这种情况。
当然,您发布的代码不会删除该表,而ORMLite也不会自动执行此操作或任何操作。是否有可能出于某种原因调用onCreate(...)
方法?
有许多方法可以调试它,但您可以使用onUpgrade(...)
方法中的原始语句记录表的内容,以确保正确构建表。然后你可能能够检测到它被清除的时间。