安卓自带一个Sqlite数据库,但是我对sql不是很熟~毕竟不会开发不会web的逆向菜狗233
正好看到书上有讲Litepal这个方便的工具,部署也超级简单,就实践了一下
Litepal方便之处在于可以将数据库的记录与Java对象建立映射,通过Bean类来快捷地操作记录
首先在build.gradle
里的dependencies
加上compile 'org.litepal.android:core:1.4.1'
,这样就不用手动下载jar包了
然后在assets
目录下添加litepal.xml
文件
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="ClassShedule" ></dbname>
<version value="3"></version>
<list>
<mapping class="com.example.activitytest.Course"></mapping>
</list>
</litepal>
其中dbname
为数据库的名字,随便取
而list
中添加要映射的Bean类
注意Bean类中要映射到记录中的成员必须为private
的,且成员类型为数据库支持的—object
类型的成员当然就没有用了
例如我的课程表Bean类
public class Course extends DataSupport{
private int node;
private String name;
private String teacher;
private String room;
private String weeks;
public int getNode() {
return node;
}
public void setNode(int node) {
this.node = node;
}
...
public String getWeeks() {
return weeks;
}
public void setWeeks(String weeks) {
this.weeks = weeks;
}
}
这一堆getter和setter是通过IDE添加的,按下Alt+Insert的快捷键后选择getter and setter
然后全选即可自动添加
具体操作的时候记得要继承DataSupport
,否则就没法保存了
for(int j=0;j<divs.size();j++) {
String[] l = divs.get(j).text().split(" ");
Log.i("myapp", String.valueOf(l.length));
Course course = new Course(i);
try {
course.setName(l[0]);
course.setTeacher(l[1]);
course.setWeeks(l[2]);
course.setRoom(l[3]);
} catch (Exception e) {
;
}
course.save();
}
这样每个div就会根据内容都得到一个course类,然后save即可保存到数据库中
另外有一点要注意,Litepal只会用id
作为主键,无法自定义主键
因此如果需要解决重复的问题的话,需要操作持久化的对象
有两种对象是持久化的,一种是save
过的,另一种则是通过query
方法从数据库中查询出来的
挺好理解的,已经写入数据库的对象修改以后save
会自动同步到它所属的记录上去
下一步就是完善UI啦~感觉这才是做安卓最困难的地方233