使用greenDao根据条件查询数据的时候碰到的问题
来源:互联网 发布:中俄贸易数据统计 编辑:程序博客网 时间:2024/06/05 05:36
在使用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
调用的方法是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 0
- 使用greenDao根据条件查询数据的时候碰到的问题
- 使用LVS的时候碰到的一些问题
- access 数据查询中碰到的日期相关的问题
- GreenDao有缓存的问题。根据ID查询 修改一个值 三种方法
- mysql 数据查询时碰到的憋屈问题
- Greendao 查询不到真实数据的解决方法 清除greendao缓存
- Gitlab安装的时候碰到的问题
- 开发的时候碰到的问题
- spring,ibatis集成的时候碰到问题
- Android 开发时候碰到的一些问题
- 使用greenDAO遇到的问题
- 使用GreenDao遇到的问题
- 使用GreenDao遇到的问题
- 使用Qstring时候碰到的一个bug
- 在使用jquery的时候碰到的问题,以及跨域的问题
- 使用libtool碰到的问题
- IAR使用碰到的问题
- 使用pyquery碰到的问题
- 云平台发现服务构建:为什么不使用ZooKeeper
- The servlets named [X] and [Y] are both mapped to the url-pattern [/Z] which is not permitted
- TensorFlow安装与测试
- 新的一年新的开始
- ubuntu14.04中安装opencv2.4.10
- 使用greenDao根据条件查询数据的时候碰到的问题
- HttpEntity的类型及其使用
- javamail 报 Received fatal alert handshake_failure
- 【32】Longest Valid Parentheses
- Git 初次使用(5)
- opencv学习笔记
- SDWebImage 处理URL不变图片资源改变的情况
- 使用getBackground().setAlpha,导致其他布局背景透明度都改变的问题
- spring知识点总结