SQLite
 sql >> Database >  >> RDS >> SQLite

Come archiviare e recuperare un array di byte (dati immagine) da e verso un database SQLite?

L'array di byte può essere archiviato come tipo di dati BLOB. Non c'è niente di speciale in questa procedura tranne una cura speciale per il chunking, come:

InputStream is = context.getResources().open(R.drawable.MyImageFile);
try {
    byte[] buffer = new byte[CHUNK_SIZE];
    int size = CHUNK_SIZE;
    while(size == CHUNK_SIZE) {
        size = is.read(buffer);  //read chunks from file
        if (size == -1) break;

        ContentValues cv = new ContentValues();
        cv.put(CHUNK, buffer);       //CHUNK blob type field of your table

        long rawId = database.insert(TABLE, null, cv); //TABLE table name
    }
} catch (Exception e) {
    Log.e(TAG, "Error saving raw image to: "+rawId, e);
}