使用greenDao根据条件查询数据的时候碰到的问题

在使用greenDao根据条件查询数据的时候碰到问题,现在记录一下。
调用的方法是Dao对象调用queryRaw(String where, String... selectionArg);返回的是一个List。


/** A raw-style query where you can pass any WHERE clause and arguments. */
public List<T> queryRaw(String where, String... selectionArg) {
    Cursor cursor = db.rawQuery(statements.getSelectAll() + where, selectionArg);
    return loadAllAndCloseCursor(cursor);
}


再接着看源码,发现它调用的SQL语句是这样写的:
/** Creates an select for given columns with a trailing space */
public static String createSqlSelect(String tablename, String tableAlias, String[] columns, boolean distinct) {
    if (tableAlias == null || tableAlias.length() < 0) {
        throw new DaoException("Table alias required");
    }
StringBuilder builder = new StringBuilder(distinct ? "SELECT DISTINCT " : "SELECT ");
SqlUtils.appendColumns(builder, tableAlias, columns).append(" FROM ");
builder.append('"').append(tablename).append('"').append(' ').append(tableAlias).append(' ');
return builder.toString();
}


返回的是一个字符串,也就是SQL语句了,以之前的文章的USER表为例,可以看到返回的样式:
SELECT T."_id",T."USERNAME",T."AGE",T."STUDENT_ID" FROM "USER" T 

也就是statements.getSelectAll()返回的上面的SQL语句,所以我们的where参数必须写成"WHERE age = ?",不能直接加条件,我刚开始就是这样子,后来看了源码才发现错误,第二个参数就是想要查询参数的值了,传一个new String[]就可以了。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值