开发者

Android Cursor Problem

开发者 https://www.devze.com 2023-02-19 20:37 出处:网络
So I\'m trying to get the values from a SQLite database into a cursor, then pick a random value. I can read the cursor with getString() as I normally would in the method, but after it returns the curs

So I'm trying to get the values from a SQLite database into a cursor, then pick a random value. I can read the cursor with getString() as I normally would in the method, but after it returns the cursor it doesn't work correctly. I don't know why.. Here's my method for getting the cursor from the database. It seems to work correctly.

        public Cursor getRandomText(String Rating)
    {

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

        cursor.close();

        return cursor;

    }

Here's my code for reading the cursor after it's returned.

            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();

I'm probably making a stupid mistake and not realizing it, but I can't figure this out.

Thanks,

~Elec0


cursor.close(); // in getRandomText()

after that you cannot obtain any data from the cursor - it is closed. Remove this line.


You close() your Cursor before you return it. From where it is returned to, you are then attempting to call moveToFirst(). This cannot be done if the Cursor is closed.

In your getRandomText(String) method, you should return the meaningful data from your Cursor, rather than the Cursor object itself. That way, the method that created the Cursor can continue to close the Cursor as it should. (It should just happen at the end of the method)

0

精彩评论

暂无评论...
验证码 换一张
取 消