Проблема с курсором Android - PullRequest
2 голосов
/ 23 марта 2011

Итак, я пытаюсь получить значения из базы данных SQLite в курсор, а затем выбрать случайное значение.Я могу прочитать курсор с помощью getString (), как обычно в методе, но после того, как он вернет курсор, он не будет работать правильно.Я не знаю почему .. Вот мой метод для получения курсора из базы данных.Кажется, он работает правильно.

        public Cursor getRandomText(String Rating)
    {

        Cursor cursor = myDatabase.query("Elec0RandTexts", new String[] {"Message"}, "Rating=?", 
                new String[]{Rating}, null, null, null);
        cursor.moveToFirst();

        cursor.close();

        return cursor;

    }

Вот мой код для чтения курсора после его возврата.

            Cursor result = dbh.getRandomText(Rating);
        result.moveToFirst();

        int RandText = rand.nextInt(result.getCount());

        result.moveToPosition(RandText);
        Toast.makeText(getApplicationContext(), "" + result.getString(RandText), Toast.LENGTH_LONG).show();

        result.close();

Возможно, я делаю глупую ошибку и не осознаю ее, ноне могу понять это.

Спасибо,

~ Elec0

Ответы [ 2 ]

6 голосов
/ 23 марта 2011
cursor.close(); // in getRandomText()

после этого вы не можете получить какие-либо данные от курсора - он закрыт.Удалить эту строку.

3 голосов
/ 23 марта 2011

Вы закрываете () свой Курсор, прежде чем вернуть его. Оттуда, куда он возвращается, вы затем пытаетесь вызвать moveToFirst (). Это невозможно сделать, если курсор закрыт.

В вашем методе getRandomText (String) вы должны возвращать значимые данные из вашего Cursor, а не сам объект Cursor. Таким образом, метод, который создал Курсор, может продолжать закрывать Курсор, как и должен. (Это должно произойти только в конце метода)

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