Как исправить этот необработанный запрос - PullRequest
0 голосов
/ 03 ноября 2019

Просто выдает ошибку, подобную этой

Вызывается: android.database.CursorIndexOutOfBoundsException: Индекс -1 запрошен, с размером 1

Пожалуйста, смотритеприведенный ниже код

NoteDbHelper mDBHelper = new NoteDbHelper(this);
SQLiteDatabase db =  mDBHelper.getReadableDatabase();

String arg = "2";
String query = "select * from " + NoteEntry.TABLE_NAME + " where " + NoteEntry._ID + " =? ";
Cursor c = db.rawQuery(query,new String[]{arg});
int iTitle = c.getColumnIndex(NoteEntry.COL_TITLE);
String result = "";
result = result + c.getString(iTitle);
Toast.makeText(this,result,Toast.LENGTH_SHORT);
c.close();

Пересмотренный код

NoteDbHelper mDBHelper = new NoteDbHelper(this);
SQLiteDatabase db =  mDBHelper.getReadableDatabase();

String arg = "hi";
String query = "select * from " + NoteEntry.TABLE_NAME + " where " + NoteEntry.COL_TITLE + " =? ";
Cursor c = db.rawQuery(query,new String[]{arg});
int iTitle=c.getColumnIndex(NoteEntry.COL_TITLE);
String result = "";
result=result+c.getString(iTitle);
Toast.makeText(this,result,Toast.LENGTH_SHORT).show();
c.close();

, но все равно выдает ошибку: android.database.CursorIndexOutOfBoundsException: Индекс -1 запрошен, с размером 1

1 Ответ

0 голосов
/ 03 ноября 2019

После этого оператора:

Cursor c = db.rawQuery(query,new String[]{arg});

индекс курсора находится прямо перед 1-й строкой (если она есть). Вы должны позвонить moveToFirst() или moveToNext(), чтобы расположить указатель в 1-й строке:

Cursor c = db.rawQuery(query,new String[]{arg});
String result = "";
if (c.moveToFirst()) {
    int iTitle=c.getColumnIndex(NoteEntry.COL_TITLE);
    result=result+c.getString(iTitle);
    Toast.makeText(this,result,Toast.LENGTH_SHORT).show();
}
c.close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...