如何在 ORM "ActiveAndroid" 中更新 table?
How to update a table in ORM "ActiveAndroid"?
我在我的项目中使用"ActiveAndroid"。我有一个我保留的模型。这是一个模型:
@Table(name="Params")
public class Params extends Model {
public Params() {
super();
}
@Expose
@Column(name="height")
@SerializedName("heigth")
public int heigth;
@Expose
@Column(name="weight")
@SerializedName("weight")
public int weight;
}
这里全部保存:
public void success(User user, Response response) {
user.params.save();
user.save();
ActiveAndroid.clearCache();
}
一切正常!但是如果我想在模型中添加另一个字段:
@Expose
@Column(name="strong")
@SerializedName("strong")
public int strong;
我收到一个错误:
android.database.sqlite.SQLiteException: table Params has no column named strong (code 1): , while compiling: INSERT INTO Params(Id,weight,height,strong) VALUES (?,?,?,?)
我当然知道为什么会出现这个错误。因为 table 没有这样的列。问题来了,这个栏目怎么加???
既然我已经尝试过了:
彻底删除程序,重新编译,运行,一切正常!因为它从该列创建了一个新的 table。
尝试更改清单数据库中的版本,但这并没有成功。
我知道在正常使用数据库的情况下,在升级的过程中可以更改数据库的版本和重构table。但是如何在 ORM 中做到这一点 "ActiveAndroid" ?
有一个叫做 Migration
的东西,在 Active Android 你可以像 this
在您的模型中添加字段(您已经这样做了)
更改 AndroidManifest.xml 元数据的数据库版本
编写迁移脚本。将您的脚本命名为 [newDatabaseVersion].sql
,并将其放在目录 [YourApp’sName]/app/src/main/assets/migrations
中。在我的具体示例中,我将创建文件 [MyAppName]/app/src/main/assets/migrations/2.sql
.
ALTER TABLE Items ADD COLUMN Priority TEXT;
我在我的项目中使用"ActiveAndroid"。我有一个我保留的模型。这是一个模型:
@Table(name="Params")
public class Params extends Model {
public Params() {
super();
}
@Expose
@Column(name="height")
@SerializedName("heigth")
public int heigth;
@Expose
@Column(name="weight")
@SerializedName("weight")
public int weight;
}
这里全部保存:
public void success(User user, Response response) {
user.params.save();
user.save();
ActiveAndroid.clearCache();
}
一切正常!但是如果我想在模型中添加另一个字段:
@Expose
@Column(name="strong")
@SerializedName("strong")
public int strong;
我收到一个错误:
android.database.sqlite.SQLiteException: table Params has no column named strong (code 1): , while compiling: INSERT INTO Params(Id,weight,height,strong) VALUES (?,?,?,?)
我当然知道为什么会出现这个错误。因为 table 没有这样的列。问题来了,这个栏目怎么加???
既然我已经尝试过了:
彻底删除程序,重新编译,运行,一切正常!因为它从该列创建了一个新的 table。
尝试更改清单数据库中的版本,但这并没有成功。
我知道在正常使用数据库的情况下,在升级的过程中可以更改数据库的版本和重构table。但是如何在 ORM 中做到这一点 "ActiveAndroid" ?
有一个叫做 Migration
的东西,在 Active Android 你可以像 this
在您的模型中添加字段(您已经这样做了)
更改 AndroidManifest.xml 元数据的数据库版本
编写迁移脚本。将您的脚本命名为
[newDatabaseVersion].sql
,并将其放在目录[YourApp’sName]/app/src/main/assets/migrations
中。在我的具体示例中,我将创建文件[MyAppName]/app/src/main/assets/migrations/2.sql
.
ALTER TABLE Items ADD COLUMN Priority TEXT;