как исправить "java.lang.IllegalStateException: не удалось прочитать строку 0, столбец 2 из CursorWindow." - PullRequest
0 голосов
/ 28 марта 2019

Я недавно научился писать код в Android с использованием SQLite, и я пытаюсь выбрать данные из SQLite, но эта ошибка возникает

Я попробовал некоторые предложения из Интернета (вопрос stackoverflow и другой веб-сайт) и прочитал мою книгу, но это не решило мою проблему, спасибо.

я пытался изменить синтаксис курсора на cursor.getcolumname, но это не помогло, я попытался изменить sqlitedatabase.query, я прочитал предложение из Интернета, но все еще не решил мою проблему

 public Penyakit getPenyakit1(String namaGejal){
    SQLiteDatabase db = this.getReadableDatabase();
    String query = " SELECT  idPen FROM " + TABLE_CONTACTS + " WHERE " + 
  namapen + " =\'" + namaGejal + "\'";
    Cursor cursor = db.rawQuery(query,null);
    Penyakit penyakit = new Penyakit();
    if(cursor.moveToFirst()){
        penyakit.set_idPenyakit(Integer.parseInt(cursor.getString(2)));
        cursor.close();
    }else{
        penyakit=null;
    }
    return penyakit;
}
  eror logcat
     java.lang.IllegalStateException: Couldn't read row 0, col 2 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
    at android.database.CursorWindow.nativeGetString(Native Method)
    at android.database.CursorWindow.getString(CursorWindow.java:465)
    at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:51)

вот моя переменная, если вам интересно

here my variable in case u wondering
     private static final String TABLE_CONTACTS ="tb_penyakit";
private static final String nomber="nomber";
private static final String namapen ="namapen";
private static final String idPen="idPen";
private static final String namaGej ="namaGej";
private static final String idGej="idGej";

ожидаемое значение idPen выбрано из базы данных sqlite

1 Ответ

0 голосов
/ 28 марта 2019

спасибо всем, решаем с этим кодом

  public Penyakit getPenyakit1(String namaGejal){
    SQLiteDatabase db = this.getReadableDatabase();
    String[] colums = {nomber,namapen,idPen,namaGej,idGej};
    String selection = namapen + " = ?";
    String[] selectionArgs = {String.valueOf(namaGejal)};
    Cursor cursor = db.query(TABLE_CONTACTS, colums, selection,
            selectionArgs, null, null, null);
    Penyakit penyakit = new Penyakit();
    if (null != cursor) {
        cursor.moveToFirst();
        penyakit.set_nomber(cursor.getInt(0));
        penyakit.set_namaPen(cursor.getString(1));
        penyakit.set_idPenyakit(cursor.getInt(2));
        penyakit.set_namGej(cursor.getString(3));
        penyakit.set_idGejala(cursor.getInt(4));

    }else{
        penyakit=null;
    }
    db.close();
    return penyakit;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...