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;
Я не понимаю, почему это происходит. Я использовал тот же формат для обеих таблиц. Любая помощь приветствуется.
Поскольку 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);