我使用以下代码:
preparePeople();
final Cursor c = mContext.getContentResolver().query(People.CONTENT_URI, mPROJECTION, null, null, null);
String s = c.getString(1);
private void preparePeople() {
final ContentResolver mResolver = mContext.getContentResolver();
mResolver.delete(People.CONTENT_URI, null, null);
final ContentValues valuse = new ContentValues();
valuse.put(People._ID, "1");
valuse.put(People.NAME, "name");
Uri uri = mResolver.insert(People.CONTENT_URI, valuse);
}
但在执行上述代码时,我得到如下例外:
android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 0
由于 c.getString(1)声明根据日志,但我不知道为什么..有人可以帮助解决此错误吗?
答案 0 :(得分:4)
首先,当您第一次获得结果时,Cursor
位于第一行结果之前。致电moveToFirst()
或moveToPosition()
或其他内容,将Cursor
移至您想要的行。
其次,Cursor
中的列从0开始编号,与计算机编程中的大多数内容一样。除非mPROJECTION
有2个以上的条目,并且您真的想要一个索引为1
的条目,否则您可能需要调用getString(0)
,因为MD会在评论中指出。
第三,请记住there are cases where you might not get any results back,因此您可能需要在继续之前检查从query()
返回的行数。