У меня есть база данных, и я делаю запрос к ней, используя
Cursor mCursor = mapDb.query(MY_TABLE, new String[] {KEY_ONEID, KEY_TWOID}, "trim("+KEY_TWOID + ") != '' ", null, null, null, null);
, что в терминах SQL буквально означает: SELECT OneId, TwoId FROM auth WHERE trim(TwoId) != ''
Использование необработанногоSQL-запрос работает в моем браузере SQLite, чтобы показать мне соответствующие строки, поэтому объект Cursor должен содержать те же результаты.
Во-вторых, в моем java-методе я использую условие, чтобы проверить, имеет ли этот результат что-либо
if(mCursor.getColumnIndex(KEY_ONEID) > -1) //if > -1 then the mCursor returned a row
{
if(mCursor.getString(mCursor.getColumnIndex(KEY_ONEID)).contains(id)) //breaks here
return mCursor.getString(mCursor.getColumnIndex(KEY_TWOID));
else
return "";
}
Но по какой-то причине, хотя в хэш-карте mCursor должны быть возвращены все значения, следующий условный оператор
mCursor.getString(mCursor.getColumnIndex(KEY_ONEID)).contains(id)
по-прежнему возвращает: An exception occurred: android.database.CursorIndexOutOfBoundsException
это строка, которая выдает исключение: mCursor.getString(mCursor.getColumnIndex(KEY_ONEID))
и мой следующий элемент в операторе возврата
Я озадачен тем, как тогда получить определенное значение строки!потому что я извлек базу данных и выполнил тот же запрос и ясно вижу, что оба значения, которые я хочу, действительно существуют!
функция Cursor не предоставляет много других способов получения значений, так что пониманиеоценили!