我的数据库查询目前设置如下:
编辑,顺便说一句,我的变量(_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没有这样的列)所以我想弄清楚差异是什么,我认为我的陈述有些不对,但不知道是什么。有人能给我任何建议吗?感谢
答案 0 :(得分:1)
在第一个示例中,您有以下内容:
private String[] from = {_ID, CAT_ITEM, BUDGET_AMOUNT, };
如果这是正确的,则表示您有三个变量 _ ID
,CAT_ITEM
和BUDGET_AMOUNT
以及名称您表中的列数。 CAT_BUD_TAB
可能同样包含您的表名。
为了使您的原始查询正确,它应该像这样写:
String incomeQuery = "SELECT " + _ID + ", " + CAT_ITEM + ", " + BUDGET_AMOUNT + " FROM " + CAT_BUD_TAB + " WHERE IN_OUT=’in’";
而且只是说了这句话:这不是编写字符串的好方法。它应该使用StringBuilder
来完成。为简单起见,我这样做就是这样。
答案 1 :(得分:1)
从您的代码看起来,_ID
,CAT_ITEM
,BUDGET_AMOUNT
和CAT_BUD_TAB
是字符串字段。它们的值是否与字段名称相同?
您的单引号在两个查询之间也有所不同。
与您的问题无关,但您还需要在SQL的末尾添加ORDER BY _ID ASC
以复制结果顺序。