Android游标问题

时间:2011-03-23 18:26:58

标签: android cursor

所以我试图将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 个答案:

答案 0 :(得分:6)

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

之后,您无法从光标获取任何数据 - 它已关闭。删除此行。

答案 1 :(得分:3)

在返回之前关闭()光标。从返回的位置开始,您将尝试调用moveToFirst()。如果Cursor关闭,则无法完成此操作。

在getRandomText(String)方法中,您应该从Cursor返回有意义的数据,而不是Cursor对象本身。这样,创建Cursor的方法可以继续关闭Cursor。 (它应该发生在方法的最后)