【问题标题】:How can i convert this query into a rawQuery?如何将此查询转换为 rawQuery?
【发布时间】:2010-12-10 14:11:48
【问题描述】:

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

编辑,顺便说一句,我的变量(_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 没有这样的列)所以我试图找出区别是什么,我认为我的陈述有问题但不知道是什么。谁能给我任何建议?谢谢

【问题讨论】:

    标签: sql android database sqlite


    【解决方案1】:

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

    两个查询之间的单引号看起来也不同。

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

    【讨论】:

    • 对,对不起,我忘了提到你上面提到的变量是字符串,但它们实际上包含完全相同的文本和格式(String CAT_ITEM = "CAT_ITEM"; 等等)但是感谢您指出我应该说点什么。反正你是对的!我没有注意到单个 qoutes 看起来不同! (我从指南中复制了工作中的那个)谢谢你指出,现在如果我能弄清楚在我的键盘上按什么键,问题就解决了:)谢谢!
    【解决方案2】:

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

    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 来完成。为了简单起见,我只是在这里这样做了。

    【讨论】:

    • 哦,谢谢我应该提到这一点,但是这三个变量实际上与它们的内容完全相同! (我知道,傻。)但这意味着这可能不是问题。无论如何感谢您的回复!我会研究 StringBuilder
    • @Holly:拥有与其名称相同的值的变量一点也不傻 - 只需确保始终实际使用该变量;)回到你的问题:然后你应该发布一点更多的错误。 SQLException no such column 可能说得更多(希望它没有找到哪一列)。
    • @Holly:还有一件事你可以做。试着写SELECT * FROM... 只是为了看看你真的设法执行了一个原始查询。如果可行,您可以返回尝试仅获取您需要的列。
    • 感谢您帮我找到问题!但事实证明我只是使用撇号而不是单引号,doh,无论如何谢谢你:)
    猜你喜欢
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多