Sql 如何将此查询转换为原始查询?
我的数据库查询当前设置如下: Edit,顺便说一句,我的变量(\u ID、CAT\u ITEM和BUDGET\u AMOUNT)实际包含的文本和格式与它们编写时完全相同,我知道这很愚蠢,但无论如何这不应该是问题所在Sql 如何将此查询转换为原始查询?,sql,android,database,sqlite,Sql,Android,Database,Sqlite,我的数据库查询当前设置如下: Edit,顺便说一句,我的变量(\u ID、CAT\u ITEM和BUDGET\u AMOUNT)实际包含的文本和格式与它们编写时完全相同,我知道这很愚蠢,但无论如何这不应该是问题所在 private String[] from = {_ID, CAT_ITEM, BUDGET_AMOUNT, }; private String orderBy = _ID + " ASC"; private String whereIn = "IN_OUT='in'"; Curs
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没有这样的列),所以我试图找出区别是什么,我想我的语句只是出了点问题,但不知道是什么。谁能给我一些建议吗?谢谢在您的第一个示例中,您有以下几点:
private String[] from = {_ID, CAT_ITEM, BUDGET_AMOUNT, };
如果这是正确的,则意味着您有三个变量ID、CAT\u ITEM
和BUDGET\u AMOUNT
,以及表中列的名称。这同样适用于可能包含表名的CAT\u BUD\u选项卡
为了使原始查询正确,应该这样编写:
String incomeQuery = "SELECT " + _ID + ", " + CAT_ITEM + ", " + BUDGET_AMOUNT + " FROM " + CAT_BUD_TAB + " WHERE IN_OUT=’in’";
我要说的是:这不是一个很好的组成字符串的方法。而应该使用StringBuilder
来完成。为了简单起见,我在这里这样做。从您的代码中,它看起来像\u ID
,CAT\u项目
,预算金额
和CAT\u BUD\u选项卡
是字符串字段。它们的值是否与字段名相同
您的单引号在两个查询之间看起来也不同
与您的问题无关,但您还需要将ORDER BY _idASC
添加到sql的末尾,以复制结果顺序。哦,谢谢,我应该提到这一点,但这三个变量实际上与其内容完全相同!(我知道,傻瓜。)但这意味着这可能不是问题。无论如何,谢谢你的回复!我会调查的StringBuilder@Holly:让变量的值与其名称相同一点也不傻-只要确保始终实际使用该变量;)回到你的问题:然后你应该发布更多的错误。SQLException没有这样的专栏
可能会说得更多一些(希望找不到哪一个专栏)。@Holly:还有一件事你可以做。试着只写SELECT*FROM…
,看看您是否真正执行了原始查询。如果可以的话,你可以回去尝试只获取你需要的列。谢谢你帮我找到问题!但事实证明,我只是用了撇号而不是单引号,doh,无论如何谢谢:)对,对不起,我忘了提到你上面提到的变量是字符串,但它们实际上包含完全相同的文本和格式(String CAT_ITEM=“CAT_ITEM”等等),但感谢你指出这一点,我应该说点什么。不管怎样,你是对的!我没有注意到单曲库特斯看起来不一样!(我从一本指南中复制了一本工作指南)谢谢你指出它,现在如果我能算出在键盘上按哪个键,问题就解决了:)谢谢!