android sqlite blob

BOLB表示二進制大對象,這種數據類型經過用來保存圖片,圖象,視頻等。html

 

使用場景:數據庫

http://blog.sina.com.cn/s/blog_8cfbb99201012oqn.html數組

 

public class MySQLiteOpenHelper extends SQLiteOpenHelper {
// 重寫構造方法
public MySQLiteOpenHelper(Context context, String name,
CursorFactory cursor, int version) {
super(context, name, cursor, version);
}

// 建立數據庫的方法
public void onCreate(SQLiteDatabase db) {
// 建立一個數據庫,表名:imagetable,字段:_id、image。
db.execSQL("CREATE TABLE imagetable (_id INTEGER PRIMARY KEY AUTOINCREMENT,image BLOB)");
}

// 更新數據庫的方法
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}

// 建立助手類的實例
// CursorFactory的值爲null,表示採用默認的工廠類
mySQLiteOpenHelper = new MySQLiteOpenHelper(this, "saveimage.db", null,1);
// 建立一個可讀寫的數據庫
mydb = mySQLiteOpenHelper.getWritableDatabase();

//將圖片轉化爲位圖
Bitmap bitmap1=BitmapFactory.decodeResource(getResources(), R.drawable.erweima);

int size=bitmap1.getWidth()*bitmap1.getHeight()*4;
//建立一個字節數組輸出流,流的大小爲size
ByteArrayOutputStream baos=new ByteArrayOutputStream(size);
//設置位圖的壓縮格式,質量爲100%,並放入字節數組輸出流中 bitmap1.compress(Bitmap.CompressFormat.PNG, 100, baos);
//將字節數組輸出流轉化爲字節數組byte[]
byte[] imagedata1=baos.toByteArray();

//將字節數組保存到數據庫中
ContentValues cv=new ContentValues();
cv.put("_id", 1);
cv.put("image", imagedata1);
mydb.insert("imagetable", null, cv);
//關閉字節數組輸出流
baos.close();

從數據庫中查詢的方法
//建立一個指針
Cursor cur=mydb.query("imagetable", new String[]{"_id","image"}, null, null, null, null, null);
byte[] imagequery=null;
if(cur.moveToNext()){
//將Blob數據轉化爲字節數組imagequery=cur.getBlob(cur.getColumnIndex("image"));
}
//將字節數組轉化爲位圖
Bitmap imagebitmap=BitmapFactory.decodeByteArray(imagequery, 0, imagequery.length);
iv1=(ImageView) findViewById(R.id.imageView1);
//將位圖顯示爲圖片
iv1.setImageBitmap(imagebitmap);this

相關文章
相關標籤/搜索