Как мне исправить SQLException при выполнении запроса к базе данных?

-3

Im noob для android, и я пытаюсь запустить запрос в моей базе данных, чтобы вернуть одно значение строки из моей таблицы. Я сделал это успешно в одном запросе, выбрав мой идентификатор строки, используя длинный. Показаны здесь:

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;

Я не понимаю, почему это происходит. Я использовал тот же формат для обеих таблиц. Любая помощь приветствуется.

  • 3
    И что за исключение ??? Поместите Stacktrace этого ..
  • 0
    какое исключение?
Теги:
database
string

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);
  • 0
    не совсем, не совсем ... скорее KEY_NAME + "=?" а потом как параметр ...
  • 0
    оба решения верны, вопрос синтаксиса (кто что делает)
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню