如何将此查询转换为rawQuery?

时间:2010-12-10 14:11:49

标签: sql android database sqlite

我的数据库查询目前设置如下:

编辑,顺便说一句,我的变量(_ID,CAT_ITEM和BUDGET_AMOUNT)实际上包含的文本和格式完全相同,我知道这很愚蠢,但不管怎样,这应该不是问题

private String[] from = {_ID, CAT_ITEM, BUDGET_AMOUNT, };
private String orderBy = _ID + " ASC";
private String whereIn = "IN_OUT='in'";

Cursor cursor = db.query(CAT_BUD_TAB, from, whereIn, null, null, null, orderBy);

这正是我想要它做的,但我想尝试使用rawQuery(只是为了获取查询语句并测试它,我也不需要这么多的字符串变量)。

这就是我想出的:

private String incomeQuery = "SELECT _ID, CAT_ITEM, BUDGET_AMOUNT FROM CAT_BUD_TAB WHERE IN_OUT=’in’";
Cursor cursor = db.rawQuery(incomeQuery, null);

然而这不起作用(我得到SQLException没有这样的列)所以我想弄清楚差异是什么,我认为我的陈述有些不对,但不知道是什么。有人能给我任何建议吗?感谢

2 个答案:

答案 0 :(得分:1)

在第一个示例中,您有以下内容:

private String[] from = {_ID, CAT_ITEM, BUDGET_AMOUNT, };

如果这是正确的,则表示您有三个变量 _ IDCAT_ITEMBUDGET_AMOUNT以及名称您表中的列数。 CAT_BUD_TAB可能同样包含您的表名。

为了使您的原始查询正确,它应该像这样写:

String incomeQuery = "SELECT " + _ID + ", " + CAT_ITEM + ", " + BUDGET_AMOUNT + " FROM " + CAT_BUD_TAB + " WHERE IN_OUT=’in’";

而且只是说了这句话:这不是编写字符串的好方法。它应该使用StringBuilder来完成。为简单起见,我这样做就是这样。

答案 1 :(得分:1)

从您的代码看起来,_IDCAT_ITEMBUDGET_AMOUNTCAT_BUD_TAB是字符串字段。它们的值是否与字段名称相同?

您的单引号在两个查询之间也有所不同。

与您的问题无关,但您还需要在SQL的末尾添加ORDER BY _ID ASC以复制结果顺序。