-3

我是 android 的菜鸟,我试图在我的数据库上运行一个查询以从我的表中返回一个字符串值。通过使用 long 选择我的行 ID,我在一个查询中成功完成了此操作。此处显示:

public String getHotness(long l) throws SQLException{
    // TODO Auto-generated method stub
    String[] columns = new String[]{  KEY_ROWID, KEY_NAME, KEY_HOTNESS };
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_ROWID + "=" + l, null, null, null, null);
    if (c != null){
        c.moveToFirst();
        String hotness = c.getString(2);
        return hotness;
    }
    c.close();
    return null;
}

但是现在我必须使用字符串查询另一个表,但是当我执行这个查询时,我得到了一个 SQLException。

public String getSingleQty(String aCoin) throws SQLException{
    // TODO Auto-generated method stub
    String[] columns = new String[]{ KEY_ROWID, KEY_NAME, KEY_QUANTITY, KEY_OUNCES, KEY_VALUE};     
    Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "=" + aCoin, null, null, null, null); //<--this causes exception
    String result = "";

    if (c != null){
        c.moveToFirst();
        result= c.getString(2);
        c.close();
        return result;
    }
    c.close();
    return null;

我不明白为什么会这样。我对两个表都使用了相同的格式。任何帮助是极大的赞赏。

4

1 回答 1

3

由于 aCoin 作为字符串传递给查询,因此必须用撇号包裹。更正的代码片段:

Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "='" + aCoin + "'", null, null, null, null);

或者(如果语法更适合您)尝试这种方式:

Cursor c = ourDatabase.query(DATABASE_TABLE, columns, KEY_NAME + "=?", new String[] {aCoin}, null, null, null);
于 2012-08-30T13:34:25.717 回答