产生的原因: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")); 
} 
+0

感谢的欢..它真的帮助我:) – androidDev 2013-05-05 04:33:25

+0

我做同样的方式乌尔回答我的其他光标。但我得到了不同的错误。你能帮我吗? – androidDev 2013-05-05 05:02:30

+0

发布有关错误的代码问题,我会看一看。让我知道你什么时候发布。 – 2013-05-05 05:04:15

使用

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")); 

希望有所帮助。