Привет, У меня есть эта база данных SQLite, которая отлично работает, я добавил столбец с именем Image, который имеет тип данных Blob. Затем я разрешаю пользователю выбирать изображение из своей галереи, и из него я меняю его на URi, а затем на байт [], но когда я пытаюсь сохранить данные, не получаю сообщений об ошибках, но данные не сохраняются, и я не знаю почему?Сохранение изображения База данных SQLite
Любая помощь?
Мой запрос, чтобы создать таблицу
public String CREATEQUERY = "CREATE TABLE " + TableData.TableInfo.TABLE_NAME + "("+ TableData.TableInfo.USERNAME + " TEXT," + TableData.TableInfo.PASSWORD + " TEXT," + TableData.TableInfo.IMAGE + "BLOB);";
My Insert Method
public void InsertData (DatabasOpperations DBOpp, String Name, String Password, byte[] Image){
SQLiteDatabase SQL = DBOpp.getWritableDatabase();
ContentValues ContentV = new ContentValues();
ContentV.put(TableData.TableInfo.USERNAME, Name);
ContentV.put(TableData.TableInfo.PASSWORD, Password);
ContentV.put(TableData.TableInfo.IMAGE, Image);
long Insert = SQL.insert(TableData.TableInfo.TABLE_NAME, null, ContentV);
Cursor Cur = SQL.query(TableData.TableInfo.TABLE_NAME, null, null, null, null, null, null);
int Res = Cur.getCount();
int Res2 = Cur.getColumnIndex(TableData.TableInfo.IMAGE);
Log.d("DatabaseOperations", "Success, 1 Row Added");
Log.d("DatabaseOperations", "Num " + Res);
Log.d("DatabaseOperations", "Num " + Res2);
}
Java-класс, который вызывает этот метод и сохраняет данные
DB.InsertData(DB, Uname, Pass, DBByte);
Toast.makeText(getApplicationContext(), "Success, Registered!", Toast.LENGTH_SHORT).show();
Intent Home = new Intent(Reg.this, MainActivity.class);
startActivity(Home);
finish();
DBByte является
public byte[] DBByte;
Конвертирование изображения из Ури в байт []
public void onActivityResult(int RequestCode, int ResultCode, Intent Data) {
if (ResultCode == RESULT_OK) {
if (RequestCode == SELECTED) {
Uri SelectedImageUri = Data.getData();
SelectedImagePath = getPath(SelectedImageUri);
Log.d("DatabaseOperations", "Image Path : " + SelectedImagePath);
Img.setImageURI(SelectedImageUri);
try {
FileInputStream FileInpStream = new FileInputStream(SelectedImagePath);
BufferedInputStream BufInputStream = new BufferedInputStream(FileInpStream);
DBByte = new byte[BufInputStream.available()];
BufInputStream.read(DBByte);
Log.d("DatabaseOperations", "Image Size : " + DBByte.length + " KB");
}
catch (IOException e) {
Log.d("DatabaseOperations", "Error : " + SelectedImagePath);
}
}
}
}
Пожалуйста, ваши код, как вы Делать это. – Rohit5k2
ОК плохо изменить вопрос с кодом – RexDough
Базы данных SQL на самом деле не предназначены для хранения изображений или больших байтовых массивов. –