【问题标题】:Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1引起:android.database.CursorIndexOutOfBoundsException:请求索引-1,大小为1
【发布时间】:2022-01-12 14:04:07
【问题描述】:

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

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

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

【问题讨论】:

    标签: android sqlite cursor


    【解决方案1】:

    使用

    Cursor c = dba.rawQuery("SELECT k_id FROM TB_kontak where nomor = '"+nomor+"'", null);
    

    【讨论】:

      【解决方案2】:

      游标官方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"));
      

      希望对您有所帮助。

      【讨论】:

        【解决方案3】:

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

        Cursor cursorKontak = data.pilihKontak(nomor);
        if (cursorKontak.moveToFirst()) {
            idkontak = cursorKontak.getString(cursorKontak.getColumnIndex("idkontak"));
        }
        

        【讨论】:

        • 我对另一个光标的回答与您的回答相同。但我得到了不同的错误。你能帮帮我吗?
        • 发布一个关于错误代码的问题,我会看看。发帖时告诉我。
        猜你喜欢
        • 1970-01-01
        • 2018-11-04
        • 1970-01-01
        • 1970-01-01
        • 2012-09-07
        • 2012-05-01
        • 1970-01-01
        相关资源
        最近更新 更多