ActiveAndroid的配置与基本使用可参考官方文档:https://github.com/pardom/ActiveAndroid
1.给表添加字段
修改配置文件
<meta-data
android:name="AA_DB_VERSION"
android:value="2" />
添加SQL语句:main\assets\migrations\2.sql
ALTER TABLE book ADD COLUMN pages INTEGER;
重新运行应用则添加字典成功
2.表删除字段(大坑)
按Sqlite官方文档的说法:
The only schema altering commands directly supported by SQLite are the “rename table” and “add column” commands shown above
可参考:https://www.sqlite.org/lang_altertable.html
总之各种尝试在不卸载应用重新安装和删除数据库文件的条件下没有实现删除字段的功能,有谁发现解决办法分享一下啊
3.表修改字段同上,未试验
4.添加表
添加表很容易,和第一次创建表的方式一样,继承Model,添加注解@Table @Column,然后在配置文件中升级数据库版本,重新运行应用即添加成功
@Table(name = "Authors")
public class Author extends Model{
@Column(name = "name")
private String name;
@Column(name = "age")
private int age;
public Author() {
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
<meta-data
android:name="AA_DB_VERSION"
android:value="5" />
5.删除表
添加SQL语句,升级数据库版本
<meta-data
android:name="AA_DB_VERSION"
android:value="7" />
DROP TABLE Author;
6.当为一个类添加一个对象属性,需要在数据库中建立一个新的表,并连接外键。
新建表的操作,同上。
在原有表中添加对象id字段
ALTER TABLE book ADD COLUMN author INTEGER;
升级数据库
<meta-data
android:name="AA_DB_VERSION"
android:value="9" />
注意ActiveAndroid能自动处理的粒度只是基本数据类型,当某类的属性为对象类型是,需要对其属性和对象分别进行保存
Book book = new Book();
Author author = new Author();
author.setName("Xxx");
book.setAuthor(author);
book.setName("ActiveAndroid");
book.setBuyTime(new Date());
book.setPages(300);
book.setPrice((float)30.0);
author.save();
book.save();
Last word:
在使用ActiveAndroid进行应用开发时,需要更新数据表结构时操作会比较繁琐,当结构修改无效果是可以尝试升级下数据库的版本,一些时候虽然你添加了对应升级数据要运行的SQL语句,但由于开发时会频繁地测试代码,很可能数据库的版本已经升级到了你所保存的SQL语句对应的等级