android mysql 图片_android sqlite添加图片到数据库
sqlite圖片是怎么儲存的呢?其實是二進制的方式存儲的
blob代表使用二進制儲存 (更多類型參考:數據庫簡介)
在創建表的地方,VALUE_PIC代表存儲圖片字段,blob代表這個字段是以二進制儲存的。
/*創建表語句 語句對大小寫不敏感 create table 表名(字段名 類型,字段名 類型,…)*/
private final String CREATE_PERSON = "create table " + TABLE_NAME_PERSON + "(" +
VALUE_ID + " integer primary key," +
VALUE_NAME + " text ," +
VALUE_ISBOY + " integer," +
VALUE_AGE + " ingeter," +
VALUE_ADDRESS + " text," +
VALUE_PIC + " blob" +
")";
那怎么存,其實存的是字節數組byte[]
/**
* 添加數據
* @param model 數據模型
* @return 返回添加數據有木有成功
*/
public PersonModel addPersonDataReturnID(PersonModel model) {
//把數據添加到ContentValues
ContentValues values = new ContentValues();
values.put(VALUE_NAME, model.getName());
values.put(VALUE_AGE, model.getAge());
values.put(VALUE_ISBOY, model.getIsBoy());
values.put(VALUE_ADDRESS, model.getAddress());
//這里存儲圖片,model.getPic() 是一個字節數組
values.put(VALUE_PIC, model.getPic());
//添加數據到數據庫
long index = getWritableDatabase().insert(TABLE_NAME_PERSON, null, values);
//不等于-1表示添加成功(可以看insert源碼)
if (index != -1) {
model.setId(index);
return model;
} else {
return null;
}
}
怎么將圖片變成字節數組?
/**
* @param resourceID 圖片資源id
* @return 將圖片轉化成byte
*/
private byte[] picTobyte(int resourceID)
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
InputStream is = context.getResources().openRawResource(resourceID);
Bitmap bitmap = BitmapFactory.decodeStream(is);
//壓縮圖片,100代表不壓縮(0~100)
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
return baos.toByteArray();
}
那怎么取出來呢?
//查詢全部數據
Cursor cursor = getWritableDatabase().query(TABLE_NAME_PERSON, null, null, null, null, null, null, null);
byte pic[] = cursor.getBlob(cursor.getColumnIndex(VALUE_PIC));
Bitmap b = BitmapFactory.decodeByteArray(pic, 0, pic.length);
holder.pic.setImageBitmap(b);
sqlite也無非就創建、增、刪、改、查、更新。
總結
以上是生活随笔為你收集整理的android mysql 图片_android sqlite添加图片到数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS面试题汇总(四)
- 下一篇: PUN☀️三、服务器大厅、服务器房间