小生在学习android的过程中对spl这一块有种朦朦胧胧的感觉,这一部分的知识点很混乱。其实也是因为自己没有认真的整理过知识点所导致的,但,who care!今天学习了
activeandroid之后,腰也不疼了,腿也不酸了,一口气上五楼,嘿。感谢android领域的大神们对技术的分享,让我这个大白感受到了开源,分享的力量。
开发者对activeandroid的其中一句描述也是说到心坎上,***不使用sql语句就能实现***爽的不要不要的。
那接下来就认识Activeandroid的使用了:
1:导入activeandroid库
下载jar包,添加到依赖:
我把jar包放到了网盘上:http://pan.baidu.com/s/1dFaB0Wx
也或者:
在gradle中:compile 'com.michaelpardo:activeandroid:3.1.0-SNAPSHOT'
2:在清单文件中设置数据库名字以及版本号:
<meta-data android:name="AA_DB_NAME"
android:value="Bigname.db" />
<meta-data
android:name="AA_DB_VERSION"
android:value="1" />
第一个是数据库名字,第二个是数据库版本,不写的话也会有默认值的,分别是Application.db , 1
3:指定Application,并完成初始化以及最后的清理工作
可以自定义Application,要注意继承的是:
com.activeandroid.app.Application
而不是app.Application噢!
然后再onCreate()方法中执行:AvtiveAndroid.initailize(this); //初始化工作
在onTerminate()方法中执行:ActiveAndroid.dispose(this); //清理工作
别忘了还要在清单文件中指明application中的name=".MyApplication"
android:name=".MyApp"
4:建立数据模型
在这里,你的表格,字段都不需要你去执行语句生成的,你只需要创建继承自Model的类,他的类名会映射成表明,属性映射成字段。
如果不希望类名作为表名的话可以在类上添加注释@Table(name = "tablename") ,而属性必须手动加上注释@Column才会映射成字段
@Table(name = "qianfengStu")
public class Student extends Model {
@Column
public String name;
@Column
public int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
增:调用model的save()方法。
Student student = new Student("bigname", 1);
student.save();
意为:添加name=bigname,age=1的数据
Select select = new Select();
List<Student> list = select.from(Student.class)
.where("name like ?","%l")
.execute();
意为:查询name中最后一位为l的数据
改:使用Update对象
Update update = new Update(Student.class);
update.set("name = pp").where("id = 5").execute();
意为:把id=5的数据的name改为pp
删:可使用Delete对象,也可以使用model对象的delete()方法等...
//删除有多种方式
//第一种,使用delect对象
// Delete delete = new Delete();
// delete.from(Student.class).where("name like ?","%g%").execute();
//第二种
// Student.delete(Student.class,1);//直接通过id来删除
//第三种 使用model对象的delete()方法
List<Student> list = new Select().from(Student.class).where("name like ?", "%g%").execute();
for (Student s : list) {
s.delete();
}
增删查改的基本使用也就差不多这样了。
最后说一下数据库的版本升级:
1:首先在你的清单文件中增加你的版本号(旧版本+1)
2:创建如下的目录结构 assest/migrations/新的版本号.sql 在里面写上你变动数据库的语句,例如添加在Student表中添加新的字段:
ALTER TABLE Student ADD COLUMN classnumber INTEGER
3:最后你要对应的修改你的model类
在练习的过程中遇到这样一个问题:
在1版本正常安装使用之后,打算升级2版本,但是assets文件名写成了assest,这样导致了添加字段失败了,然后再把这个名字改回来但还是不能够正常升级。
错误原因:就是错误升级之后的不能再去升级,意思就是不是改一下就行的。
解决方法:卸载软件,恢复到版本1,再重新升级到版本2。