У меня проблема. Я не могу получить и установить BLOB из моей базы данных. После открытия приложения я получаю эту ошибку в Logcat
. Причина: java .lang.IllegalStateException: Не удалось прочитать строку 0, столбец 8 из CursorWindow. Убедитесь, что курсор инициализирован правильно перед доступом к данным из него.
private static final String KEY_IMAGE = "image";
public Note getNote(long id){
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.query(DATABASE_TABLE,new String[] {KEY_ID,KEY_TITLE,KEY_CONTENT,KEY_PHONE,KEY_CLIENT,KEY_AGE,KEY_DATE,KEY_TIME,KEY_IMAGE}, KEY_ID+"=?",
new String[]{String.valueOf(id)}, null, null,null);
if (cursor != null)
cursor.moveToFirst();
return new Note(cursor.getLong(0)
,cursor.getString(1)
,cursor.getString(2)
,cursor.getString(3)
,cursor.getString(4)
,cursor.getString(5)
,cursor.getString(6)
,cursor.getString(7)
,cursor.getBlob(8));
}
public List<Note> getNotes() {
SQLiteDatabase db = this.getReadableDatabase();
List<Note> allNotes = new ArrayList<>();
String query = "SELECT * FROM " + DATABASE_TABLE + " ORDER BY "+KEY_TITLE+" ASC";
Cursor cursor = db.rawQuery(query,null);
if(cursor.moveToFirst()){
do{
Note note = new Note();
note.setID(Long.parseLong(cursor.getString(0)));
note.setTitle(cursor.getString(1));
note.setAge(cursor.getString(2));
note.setPhone(cursor.getString(3));
note.setClient(cursor.getString(4));
note.setContent(cursor.getString(5));
note.setDate(cursor.getString(6));
note.setTime(cursor.getString(7));
note.setImage(cursor.getBlob(8));
allNotes.add(note);
}while(cursor.moveToNext());
}
return allNotes;
}
Спасибо за помощь.