Android中的SQLite查询不返回正确的值

时间:2015-03-17 01:14:42

标签: android sqlite

以下查询不会返回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());
    }

请帮忙。

提前致谢。

2 个答案:

答案 0 :(得分:0)

解决了它。事实证明,RAWQUERY仅为其WHERE子句使用参数。

答案 1 :(得分:0)

rawQuery()仅支持字符串作为参数,字符串'2'与数字2不匹配。

如果表格列具有数字affinity,则companyId比较可能会有效,但在Android中,最好只将参数用于实际的字符串值。