2

我想从我的数据库中选择值,但我得到了错误

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

我一直在搜索,但我没有得到我的错误的解决方案。有人可以帮助我吗?我真的需要解决方案,请帮助我.. 谢谢.. 问候..

4

3 回答 3

4

您需要将光标移到第一个,“k_id”应该是“idkontak”。

Cursor cursorKontak = data.pilihKontak(nomor);
if (cursorKontak.moveToFirst()) {
    idkontak = cursorKontak.getString(cursorKontak.getColumnIndex("idkontak"));
}
于 2013-05-05T04:24:49.060 回答
1

游标官方文档说:

功能: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"));

希望有帮助。

于 2013-05-05T04:24:21.633 回答
0

利用

Cursor c = dba.rawQuery("SELECT k_id FROM TB_kontak where nomor = '"+nomor+"'", null);
于 2013-05-05T04:19:15.453 回答