向表

时间:2017-05-01 10:56:00

标签: android sql ormlite

在我的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中存储的所有数据,但我不知道为什么会发生这种情况。

1 个答案:

答案 0 :(得分:0)

  

现在执行后,它会删除存储在表格消息中的所有数据,而且我不知道为什么会发生这种情况。

当然,您发布的代码不会删除该表,而ORMLite也不会自动执行此操作或任何操作。是否有可能出于某种原因调用onCreate(...)方法?

有许多方法可以调试它,但您可以使用onUpgrade(...)方法中的原始语句记录表的内容,以确保正确构建表。然后你可能能够检测到它被清除的时间。