SELECT MAX (столбец), возвращающий только имя столбца - PullRequest
3 голосов
/ 16 июля 2010

Это меня все запутало! Я пытаюсь вернуть максимальное значение из столбца в моей базе данных, но возвращаемое значение всегда является именем столбца.

Используемый мной запрос:

private static final String SELECTMAX = "SELECT MAX(?) FROM " + TABLE_NAME ;

(тестовая) функция для возврата максимального значения:

public int getMaxValue(String field){

   int r = 0;
   String f[] = new String[] {field};
   Cursor c = this.db.rawQuery(SELECTMAX, f);
   if (c.moveToFirst()) {
       String s = c.getString(0);
       Log.i("XXXXX","Max num: " + s); 
   }
   return r;
}

Столбец, к которому я обращаюсь, имеет тип INTEGER, но результатом всегда является имя столбца, а не требуемое значение.

Спасибо

Ответы [ 2 ]

4 голосов
/ 16 июля 2010

У меня нет большого опыта в sqllite, не так ли? параметр подготовленных отчетов? Если это так, похоже, что вы выбираете макс строкового представления имени вашего столбца, вы не должны передавать имя столбца в качестве параметра.

Итак, ваш запрос должен выглядеть следующим образом.

SELECT MAX(s) FROM " + TABLE_NAME;

Вы эффективно выполняете

SELECT MAX('s') FROM " + TABLE_NAME;

1 голос
/ 16 июля 2010

Вы должны использовать статический метод DatabaseUtils .stringForQuery (), который уже есть в Android SDK, для простого извлечения значения, этот пример предназначен для бота String, также есть метод для Long

stringForQuery(SQLiteDatabase db, String query, String[] selectionArgs)

Служебный метод для запуска запроса к БД и возврата значения в первом столбце первой строки.

Что-то вроде

String myString=DatabaseUtils.stringForQuery(getDB(),query,selectionArgs);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...