Я пытался понять, как SQLite DB работает в android. я сделал простое приложение, которое использует камеру, чтобы сделать фотографию и отобразить ее на экране ... какой id нравится делать, так же хранить описание фотографии тоже - и лучший способ, которым я знаю, как это сделать, - это a db. Но у меня возникли проблемы с пониманием того, как сохранить изображение.Android - Сохранение пути файла изображения камеры в SQLite db.
изображение с камеры довольно крупное, поэтому я не хочу хранить его в БД в виде капли. Я занимаюсь поиском пути к файлу в виде текстового поля в базе данных, и я думаю, что SQL является правильным для сохранения пути. это из моего DBAdapter класса: метод
private static final String DATABASE_CREATE_SQL =
"create table " + DATABASE_TABLE
+ " (" + KEY_ROWID + " integer primary key autoincrement, "
+ KEY_USERNAME + " text, "
+ KEY_DATE + " text, "
+ KEY_PHOTO_DESCRIPTION + " text, "
+ KEY_IMAGE_PATH + " text"
+ ");";
вставки:
public long insertRow(String username, String date, String photoDesc, String imagePath) {
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_USERNAME, username);
initialValues.put(KEY_DATE, date);
initialValues.put(KEY_PHOTO_DESCRIPTION, photoDesc);
initialValues.put(KEY_IMAGE_PATH, imagePath);
// Insert it into the database.
return db.insert(DATABASE_TABLE, null, initialValues);
}
тогда в моей MainActivity - onActivityResult() для получения изображения с камеры:
private void receiveImage(int resultCode) {
if(resultCode == Activity.RESULT_OK) {
getContentResolver().notifyChange(imageUri, null);
ContentResolver contentResolver = getContentResolver();
try {
imageBitmap = MediaStore.Images.Media.getBitmap(contentResolver, imageUri);
} catch(Exception e) {
Toast.makeText(TakePhotoActivity.this, "failed to load", Toast.LENGTH_LONG).show();
Log.e(LOG_TAG, e.toString());
}
}
}
это как я добавляю строку в базу данных:
public void onClick_AddRecord(View v) {
long newId = myDb.insertRow("User", "00/00/0000",
"image description", imageUri);
populateListViewFromDB();
}
теперь проблема - если я создаю операцию для просмотра всей информации, хранящейся в строке, как мне получить доступ к изображению и назначить его ImageView?