所以我试图将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
答案 0 :(得分:6)
cursor.close(); // in getRandomText()
之后,您无法从光标获取任何数据 - 它已关闭。删除此行。
答案 1 :(得分:3)
在返回之前关闭()光标。从返回的位置开始,您将尝试调用moveToFirst()。如果Cursor关闭,则无法完成此操作。
在getRandomText(String)方法中,您应该从Cursor返回有意义的数据,而不是Cursor对象本身。这样,创建Cursor的方法可以继续关闭Cursor。 (它应该发生在方法的最后)