【发布时间】:2020-06-13 15:39:30
【问题描述】:
我有一个问题。我无法从我的数据库中获取和设置 blob。打开我的应用程序后,我的 Logcat 中出现此错误
原因:java.lang.IllegalStateException:无法读取第 0 行,第 8 列 从光标窗口。确保光标已正确初始化 在从中访问数据之前。
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;
}
感谢您的帮助。
【问题讨论】:
标签: java android android-studio