2016-02-27 6 views
-3

Привет, У меня есть эта база данных 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); 
      } 
     } 
    } 
} 
+0

Пожалуйста, ваши код, как вы Делать это. – Rohit5k2

+0

ОК плохо изменить вопрос с кодом – RexDough

+0

Базы данных SQL на самом деле не предназначены для хранения изображений или больших байтовых массивов. –

ответ

1

Вы не нашли здесь место, так что вы не имеете столбец BLOB

TableInfo.IMAGE + "BLOB);" 
Смежные вопросы