SupportSqliteQueryBuilder giving a wrong query results(SupportSqliteQueryBuilder提供错误的查询结果)
本文介绍了SupportSqliteQueryBuilder提供错误的查询结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用SupportSQLiteQueryBuilder
创建以下查询:
SELECT * FROM tablename WHERE favorite=1 ORDER BY col1
我使用以下代码构建此查询:
public static SupportSQLiteQuery getSortedQuery(String sortByColname, boolean fav){
SupportSQLiteQueryBuilder builder=
SupportSQLiteQueryBuilder
.builder(DbUtils.Names.TABLE_NAME)
.columns(new String[]{Names.COL1,Names.COL2,Names.COL3,Names.COL4,Names.COL5,Names.COL_FAVORITE})
.orderBy(sortByColname) ;
if(fav){
builder.selection(Names.COL_FAVORITE,new String[]{"1"} );
}
SupportSQLiteQuery query= builder.create();
//Log.e("DB_UTILS", "getSortedQuery:query="+query.getSql());
return query;
}
但是在检查单元测试时,我发现以下是此方法生成的SQL查询:
SELECT col1,col2,col3,col4,col5 favorite FROM tablename WHERE favorite ORDER BY col1
为什么争论没有传递到此语句中?为什么只生成了
favourite
和favourite=1
?有没有办法在查询中生成
*
?写所有的连名而不是*
很痛苦
sql
老实说,我会为此使用一个原始查询,使用基于fav
的不同推荐答案字符串。但是,如果您确实要使用SupportSQLiteQueryBuilder
.
关于第1项,通常在运行时计算位置参数,这也是SupportSQLiteQueryBuilder
API的目标。因此,您可以:
- 将
Names.COL_FAVORITE
替换为Names.COL_FAVORITE = ?
,这将在运行时使用new String[]{"1"}
- 将
Names.COL_FAVORITE
替换为Names.COL_FAVORITE = 1
,这将在运行时忽略new String[]{"1"}
关于项目2,将.columns(new String[]{Names.COL1,Names.COL2,Names.COL3,Names.COL4,Names.COL5,Names.COL_FAVORITE})
替换为.columns(new String[]{"*"})
。
这篇关于SupportSqliteQueryBuilder提供错误的查询结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:SupportSqliteQueryBuilder提供错误的查询结果


基础教程推荐
猜你喜欢
- AdMob 广告未在模拟器中显示 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- iOS4 创建后台定时器 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01