Главная » Разработка для Android » Извлечение результатов из объекта Cursor

0

Чтобы  извлечь  значения  из результирующего Курсора, сперва необхо- димо воспользоваться методами moveTo<местоположение>, описанными ранее, чтобы поставить Курсор в правильную строку.

Далее используйте типизированные методы get<тип> (передавая им индексы  столбцов),  чтобы вернуть  значение,  хранимое  в текущей строке для указанного  столбца, как показано в следующем фрагменте:

String columnValue = myResult.getString(columnIndex);

ПРИМЕЧАНИЕ

Реализации баз данных должны предусматривать константы, которые предоставляют имена и/или индексы столбцов, имеющие легко узна- ваемые названия, основанные на именах столбцов. Эти статические константы, как правило, используются внутри Адаптера базы данных.

В листинге 7.5 показано, как можно пройтись по результирующему объ- екту Cursor, извлекая и суммируя  столбцы со значениями типа float.

Листинг 7.5. Извлечение значений  из объекта Cursor

int GOLD_HOARDED_COLUMN = 2;

Cursor myGold = myDatabase.query("GoldHoards", null, null, null, null, null, null);

float totalHoard = 0f;

// Убедитесь, что у нас есть как минимум одна строка. if (myGold.moveToFirst()) {

// Пройдитесь по каждой строке. do {

float hoard = myGold.getFloat(GOLD_HOARDED_COLUMN);

totalHoard += hoard;

} while(myGold.moveToNext());

}

float averageHoard = totalHoard / myGold.getCount();

Поскольку столбцы  в базах данных SQLite  слабо типизированы, вы можете приводить отдельные значения к допустимым типам при необходи- мости. Например, значения, хранящиеся в виде натуральных чисел, можно прочитать как строки.

Добавление, обновление и удаление строк в таблице

Класс SQLiteDatabase предоставляет методы insert, delete и update, ко- торые инкапсулируют операторы языка SQL, необходимые для данных дей- ствий. Кроме того, метод execSQL позволяет выполнять любой допустимый

код на языке SQL применимо к таблицам базы данных, если вы хотите провести эти (или любые другие) операции вручную.

Каждый раз, когда вы редактируете очередное значение из базы данных, нужно вызывать метод refreshQuery для всех Курсоров, которые имеют от- ношение к редактируемой таблице.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии