181007 安卓-构建数据库

安卓自带一个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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值