在数据库上执行查询时如何修复SQLException?

时间:2012-08-30 13:27:36

标签: android database string sqlite

我是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;

我不明白为什么会这样。我对两个表使用了相同的格式。非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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);