产生的原因:android.database.CursorIndexOutOfBoundsException:指数-1要求,尺寸为1
问题描述:
我想从我的数据库选择的价值,但我得到了错误产生的原因:android.database.CursorIndexOutOfBoundsException:指数-1要求,尺寸为1
Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
我不知道哪里是错误的在我的代码中。 这是我在dbHelper中的代码。
public Cursor pilihKontak(String nomor) {
Cursor c = dba.rawQuery("SELECT idkontak FROM TB_kontak where nomor = '"+nomor+"'", null);
return c;
}
我想获得其他课程的价值。 我使用此代码。
Cursor cursorKontak = data.pilihKontak(nomor);
idkontak = cursorKontak.getString(cursorKontak.getColumnIndex("k_id"));
我搜索了,我没有得到我的错误的解决方案。 有人可以帮助我吗? 我真正需要的解决方案,请帮助我.. 感谢.. 问候..
答
您需要将光标移到第一位,“k_id”应该是“idkontak”。
Cursor cursorKontak = data.pilihKontak(nomor);
if (cursorKontak.moveToFirst()) {
idkontak = cursorKontak.getString(cursorKontak.getColumnIndex("idkontak"));
}
答
使用
Cursor c = dba.rawQuery("SELECT k_id FROM TB_kontak where nomor = '"+nomor+"'", null);
答
光标官方docs说:
功能:getColumnIndex(String columnName):
It returns the zero-based index for the given column name, or -1 if the column doesn't exist.
因此,如果你在错误中重新获得Index -1 requested
,这意味着该列不存在。因此,尝试以包括列@StinePike建议,或者您可以尝试把所有的行:
Cursor c = dba.rawQuery("SELECT * FROM TB_kontak where nomor = '"+nomor+"'", null);
然后用正确的列名:
Cursor cursorKontak = data.pilihKontak(nomor);
idkontak = cursorKontak.getString(cursorKontak.getColumnIndex("CORRECT_COLUMN_NAME"));
希望有所帮助。
感谢的欢..它真的帮助我:) – androidDev 2013-05-05 04:33:25
我做同样的方式乌尔回答我的其他光标。但我得到了不同的错误。你能帮我吗? – androidDev 2013-05-05 05:02:30
发布有关错误的代码问题,我会看一看。让我知道你什么时候发布。 – 2013-05-05 05:04:15