-3

アンドロイドの初心者で、データベースでクエリを実行して、テーブルから単一の文字列値を返そうとしています。longを使用して行IDを選択することにより、1つのクエリでこれを正常に実行しました。ここに表示されます:

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 に答える