Android光标问题
所以我试图将SQLite数据库中的值放入游标,然后选择一个随机值。我可以用getString()读取游标,就像我通常在方法中一样,但是在它返回游标之后,它就不能正常工作了。我不知道为什么。。 下面是我从数据库中获取光标的方法。它似乎工作正常Android光标问题,android,cursor,Android,Cursor,所以我试图将SQLite数据库中的值放入游标,然后选择一个随机值。我可以用getString()读取游标,就像我通常在方法中一样,但是在它返回游标之后,它就不能正常工作了。我不知道为什么。。 下面是我从数据库中获取光标的方法。它似乎工作正常 public Cursor getRandomText(String Rating) { Cursor cursor = myDatabase.query("Elec0RandTexts", new String[]
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
之后,您将无法从光标获取任何数据-光标将关闭。删除此行。在返回光标之前,请先关闭()光标。从返回到的位置,您将尝试调用moveToFirst()。如果光标已关闭,则无法执行此操作
在getRandomText(String)方法中,应该从游标返回有意义的数据,而不是游标对象本身。这样,创建游标的方法可以继续关闭游标。(它应该发生在方法的末尾)您不能在返回的游标上调用close()然后使用它。把那条线移走,用完后只关上一次,这是真的。那我就这么做。谢谢
cursor.close(); // in getRandomText()