以下查询不会返回sellprice的值,即使它在数据库中也是如此。它返回除sellprice之外的所有其他字段的值。
SELECT itemid, unitid, itemdesc, unitdescription, case ? when 1 then sellingprice1 when 2 then sellingprice2 when 3 then sellingprice3 when 4 then sellingprice4 when 5 then sellingprice5 end sellingprice FROM ITEMS WHERE COMPANYID = ? ORDER BY ITEMDESC, UNITDESCRIPTION
如果我替换?使用2和7,然后它返回sellrice的值
SELECT itemid, unitid, itemdesc, unitdescription, case 2 when 1 then sellingprice1 when 2 then sellingprice2 when 3 then sellingprice3 when 4 then sellingprice4 when 5 then sellingprice5 end sellingprice FROM ITEMS WHERE COMPANYID = 7 ORDER BY ITEMDESC, UNITDESCRIPTION
以下是我执行查询的方式
cursor = dbContext.rawQuery(query, new String[] {Integer.toString(priceLevel), Integer.toString(companyId)});
以下是我遍历返回光标的方法
if (cursor.moveToFirst()) {
do {
Log.i("item desc", cursor.getString(2));
Log.i("sellingprice", Double.toString(cursor.getDouble(4)));
items.add(new ItemDisplay(cursor.getInt(0),
cursor.getInt(1),
cursor.getString(2),
cursor.getString(3),
cursor.getDouble(4)));
} while (cursor.moveToNext());
}
请帮忙。
提前致谢。
答案 0 :(得分:0)
解决了它。事实证明,RAWQUERY仅为其WHERE子句使用参数。
答案 1 :(得分:0)
rawQuery()
仅支持字符串作为参数,字符串'2'
与数字2
不匹配。
如果表格列具有数字affinity,则companyId
比较可能会有效,但在Android中,最好只将参数用于实际的字符串值。