Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何将此查询转换为原始查询?_Sql_Android_Database_Sqlite - Fatal编程技术网

Sql 如何将此查询转换为原始查询?

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

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

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'";

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”等等),但感谢你指出这一点,我应该说点什么。不管怎样,你是对的!我没有注意到单曲库特斯看起来不一样!(我从一本指南中复制了一本工作指南)谢谢你指出它,现在如果我能算出在键盘上按哪个键,问题就解决了:)谢谢!