美文网首页
Android开发随笔1:好用的SqlLite封装“Active

Android开发随笔1:好用的SqlLite封装“Active

作者: 行百里 | 来源:发表于2016-03-10 14:54 被阅读373次

ActiveAndroid 真是不错,安卓Sqllite 操作的AR封装。

通用的配置、增伤查改数据,github官方有详细的资料,写几个项目中用到的点,官网没提到的。

1.统计一个表 的总数:

理所当然的认为是int cnt = new Select().from(Model.class).count() 结果不是
以为是 Model mdel = new Select("count(id)").from(Model.class).as('cnt').executeSingle(); 结果也不是

没翻源码,最后找到如下方法获取一个表的总行数

private int getCnt(Model model){
    new Select().from(Post.class).executeSingle();
    String sql = "SELECT COUNT(*) as total FROM " + model.getTableName();
    Cursor c = ActiveAndroid.getDatabase().rawQuery(sql, null);
    int cnt = 0;
    if(c!= null && c.getCount() > 0){
        c.moveToNext();
        cnt = c.getInt(0);
    }
   c.close();
    return cnt;
}

2.获取insert_id

理所当然的认为会有一个insert_id() 方法可以调用,结果没有。
在save之后,在select查询一次,获取id,也可以,不过太痛苦。

最后发现,其实很简单

model.save() 之后model的id就已经被赋值了,直接使用即可

Model model = new Model();
model.a = "a";
model.save();
Log.d("TAG" , model.getId());

3.ActiveAndroid 3.0 在安卓5.0以上,会有无法找到类的错误

java.lang.NoClassDefFoundError: android.support.v4.hardware.fingerprint.FingerprintManagerCompatApi23$1

解决方法有两种:

一种是在Manifest 中声明

<meta-data    android:name="AA_MODELS"    android:value="com.xxl.app.timer_jonrnal.active.Image,com.xxl.app.timer_jonrnal.active.Poi,com.xxl.app.timer_jonrnal.active.Post,com.xxl.app.timer_jonrnal.active.Voice,com.xxl.app.timer_jonrnal.active.ZipData," />

我自己试验了一下,没解决问题

第二种是升级到AA3.1,github上有个jar包提供下载,可以解决此问题。但升级AA3.1 又遇到两个问题
java.util.Date类型无法正确的存取
model.getTableName() 函数没了

不得已看下代码,解决以上两问题:

第一,Date 在AA3.1中不会默认被序列化,需要自己写TypeSerializer
具体见下代码save方法
https://github.com/pardom/ActiveAndroid/blob/08c6335cd7324c6e72da536b0c6fffa5a798f6a2/src/com/activeandroid/Model.java
第二,Model类中没有getTableName 函数了,移到Cache类中

String sql = "SELECT COUNT(*) as total FROM " + Cache.getTableName(model.getClass());

源码在这里
https://github.com/pardom/ActiveAndroid/blob/08c6335cd7324c6e72da536b0c6fffa5a798f6a2/src/com/activeandroid/Cache.java

相关文章

网友评论

      本文标题:Android开发随笔1:好用的SqlLite封装“Active

      本文链接:https://www.haomeiwen.com/subject/lbaskttx.html