美文网首页Android技术知识Android开发
SqlBrite where in 语句无效问题

SqlBrite where in 语句无效问题

作者: IOTYang | 来源:发表于2016-11-17 18:30 被阅读93次

    最近在使用SqlBrite时,发现所写的where in语句居然无效

    ```

    mBriteDb.createQuery(DbTable.TB_NAME, "Select * from "+ RPDbTable.RouteGps.TB_NAME

    +" where "+ RPDbTable.RouteGps.CL_GUID+" in (?)", ids)

    .mapToList(newFunc1() {...})...

    ```

    而我的ids=’1001’, '1002', '1003' ...; 感觉应该没问题,运行一试,果然我的感觉每次都不靠谱;为啥不行了,我也没有找到很官方的解释,但发现一个方法可以解决:

    将 in(?) 改为 "in (" + makePlaceholders( idArray.length)+ "), ids改为idArray数组。

    ```

    private String makePlaceholders(intlen) {

    if(len <1) {

    // It will lead to an invalid query anyway ..

    throw newRuntimeException("No placeholders");

    }else{

    StringBuilder sb =newStringBuilder(len *2-1);

    sb.append("?");

    for(inti =1;i < len;i++) {

    sb.append(",?");

    }

    returnsb.toString();

    }

    }

    ```

    SqlBrite是什么鬼?

    简单的说就是将SQLite数据库用Rxjava进行了封装,用于结合Rxjava使用,以下是简要介绍和下载地址:

    GitHub - square/sqlbrite: A lightweight wrapper around SQLiteOpenHelper which introduces reactive stream semantics to SQL operations.

    那Rxjava又是什么东东?

    只能说你太out了,这么强大的一个东西,你居然不知道,赶紧挖个坑把自己埋了吧~!~!

    github.com/ReactiveX/RxJava

    给 Android 开发者的 RxJava 详解

    (ps: 其实我只想记录以下,以免以后忘了》_《)废话不多说了,自己领悟去吧~!

    相关文章

      网友评论

        本文标题:SqlBrite where in 语句无效问题

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