Итак, я недавно переключил свою базу данных на ORMLite в своем приложении для планшета Android, которое я пишу. Пока все хорошо, большинство вещей подверглось рефакторингу / перекодированию. Хотя у меня возникают проблемы с тем, что изначально было сохранено в базе данных как BLOB. В моей исходной модели данных это выглядело так:
byte[] imageBytes;
но я не думаю, что смогу использовать это в ORMLite, лучше всего сказать, что это должна быть строка, так что теперь у меня есть:
@DatabaseField
String picture;
Но теперь я не понимаю, как читать и записывать эти биты данных в байтах и т. Д. Я использовал такой код для передачи данных в базу данных и из нее:
...
//Set the clients image to what was captured...
Bitmap resized2= android.graphics.Bitmap.createScaledBitmap(thumbnail, thumbnail.getWidth()/2, thumbnail.getHeight()/2, true);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
resized2.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object
byte[] b = baos.toByteArray();
mClient.setImageBytes(b);
myImage.setImageBitmap(resized2);
//do save to the database of the image to the blob whose column is picture
ContentValues initialValues = new ContentValues();
initialValues.put("picture", mClient.getImageBytes());
String [] strArray = {""+sid};
long n = dbAdapter.updateRecordsInDB("clients", initialValues, "_id=?", strArray);
Так вот как теперь я сохранял изображение, я не уверен, как это сделать, если в ORMLite нет BLOB-объектов и мне нужно использовать строки?
для полноты вот как я бы отобразил изображение:
if(mClient.getImageBytes().length <= 1) //no image in database, thats fine use generic
myImage.setImageResource(R.drawable.sillo); // create a sillouhtette face icon here...
else
myImage.setImageBitmap((BitmapFactory.decodeByteArray(mClient.getImageBytes(),0, (mClient.getImageBytes()).length)));
Итак, что мне нужно сделать, чтобы эти изображения входили и выходили из базы данных, и правильный ли тип поля String для «Blob»?