Android извлекает несколько элементов из базы данных sqlite - PullRequest
2 голосов
/ 12 ноября 2011

Мне хотелось обновить (извлечь и, возможно, отредактировать) несколько элементов в базе данных SQLite без использования цикла for / while / dowhile

Возможно ли это с помощью курсора? Я хотел бы ограничить количество просмотров людей в таблице

Есть ли какой-нибудь сложный объект данных Android, в который я могу вылить все результаты из SQL-запроса, чтобы затем проанализировать цикл

Я слышал о Parceable и сериализуемых объектах, но для этого я использую базу данных.

В настоящее время у меня есть методы для вызова элементов по отдельной строке. И я мог бы поместить этот метод в цикл for или запрос Cursor быть в цикле for, НО я не хочу делать так много обращений.

public String fetchDay(long rowId) throws SQLException {

    Cursor mCursor =

        mapDb.query(true, DAY_TABLE, new String[] {KEY_ROWID, KEY_DAY}, KEY_ROWID + "=" + String.valueOf(rowId), null,
                null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    String result = mCursor.getString(mCursor.getColumnIndex(KEY_DAY));
    mCursor.close();
    return result;

}

Как бы получить все элементы этой таблицы и сохранить их в сложном объекте без зацикливания

Понимание ценится

Ответы [ 2 ]

2 голосов
/ 12 ноября 2011

Вы можете изменить свой запрос, чтобы он возвращал более одной строки, используя что-то вроде:

KEY_ROWID + " >= " + String.valueOf(firstRowId) + " AND " + KEY_ROWID + " <= " + String.valueOf(lastRowId)

в качестве предложения where.

При этом курсор возвращает диапазонстрок, и затем вы можете выполнить итерацию по нему с помощью цикла while, например так:

mCursor.moveToFirst();  
while (!mCursor.isAfterLast()) {  
    results.add(mCursor.getString(mCursor.getColumnIndex(KEY_DAY)));  
    mCursor.moveToNext();  
}

С результатами, равными List<String>

Обратите внимание, что цикл while, используемый в этом решении,гораздо дешевле, чем повторять запросы к таблице, потому что она выполняет итерации для объекта Cursor, который находится в памяти, вместо выполнения нескольких операций ввода-вывода

1 голос
/ 12 ноября 2011

"Есть ли какой-нибудь сложный объект данных Android, в который я могу вылить все результаты из SQL-запроса, чтобы затем проанализировать цикл?"1005 * Курсор .Он представляет собой набор результатов, возвращаемый запросом к базе данных, аналогично результирующему набору JDBC.Курсор следует рассматривать как контейнер для результатов запроса к базе данных, хотя я не уверен, содержит ли он сами данные.Если ваш запрос к базе данных возвращает несколько строк, на вас будут ссылаться через курсор.Возьмите лут на этой статье , чтобы получить лучшую идею.

В любом случае, вам нужно использовать какой-то цикл для перебора курсора для каждой строки набора результатов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...