Я создал таблицу и базу данных для хранения «заголовка», «описания» и «изображения используют BLOB». Но я не могу извлечь изображение из базы данных SQLite. Я думаю, что мой код неправильный. Моя программа показывает новое описание и изображения при нажатии на следующую кнопку. И где я должен хранить все изображения в папке?
Класс DatabaseHelper
void onCreate(SQLiteDatabase db) {
this.db = db;
SQL_CREATE_WORD_TABLE = "CREATE TABLE " +
WordsContract.WordsTable.TABLE_NAME + " ( " +
WordsContract.WordsTable._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
WordsContract.WordsTable.COLUMN_GROUP_NAME + " TEXT, " +
WordsContract.WordsTable.COLUMN_NAME_WORD + " TEXT, " +
WordsContract.WordsTable.COLUMN_IMAGE + " BLOB " +
")";
db.execSQL(SQL_CREATE_WORD_TABLE);
fillWordsTable();
}
private void fillWordsTable() {
Word f1 = new Word("FRUIT","Grapes","grape.png");
addQuestion(f1);
Word f2 = new Word("FRUIT","Longon","longon.png");
addQuestion(f2);
}
private void addQuestion(Word word) {
ContentValues cv = new ContentValues();
cv.put(WordsContract.WordsTable.COLUMN_GROUP_NAME,word.getGroup());
cv.put(WordsContract.WordsTable.COLUMN_NAME_WORD,word.getNameWord());
cv.put(WordsContract.WordsTable.COLUMN_IMAGE,word.getImage());
db.insert(WordsContract.WordsTable.TABLE_NAME,null,cv);
}
public List<Word> getAllWords(){
List<Word> wordList = new ArrayList<>();
db = getReadableDatabase();
Cursor c = db.rawQuery("SELECT * FROM "+ WordsContract.WordsTable.TABLE_NAME,null);
if(c.moveToFirst()){
do{
Word word = new Word();word.setNameWord(c.getString(c.getColumnIndex(WordsContract.WordsTable.COLUMN_NAME_WORD)));
word.setImage(c.getString(c.getColumnIndex(WordsContract.WordsTable.COLUMN_IMAGE)));
wordList.add(word);
} while (c.moveToNext());
}
c.close();
return wordList; }
Класс WordsContact
public static class WordsTable implements BaseColumns{
public static final String TABLE_NAME = "word_questions";
public static final String COLUMN_GROUP_NAME = "groups";
public static final String COLUMN_NAME_WORD = "words";
public static final String COLUMN_IMAGE = "images";
}
Класс MainActivity
public void onCreate(){
mImageView = (ImageView) findViewById(R.id.image_view);
WordDbHelper dbHelper = new WordDbHelper(this);
mWordList = dbHelper.getAllWords();
wordCountTotal = mWordList.size();
Collections.shuffle(mWordList);
showNextQuestion();}
public void showNextQuestion(){
if(wordCounter < wordCountTotal){
currentWord = mWordList.get(wordCounter);
titleGroup.setText(currentWord.getGroup());
nameWord.setText(currentWord.getNameWord());
mImageView.setImageBitmap(currentWord.getImage());
wordCounter++;
}else{
finish();
}
}
ошибка: несовместимые типы: строка не может быть преобразована в растровое изображение