我有一个SQLite数据库,我使用此代码将图像存储为BLOB
URL url = new URL("http://t0.gstatic.com/images?q=tbn:ANd9GcRsaLl3TGB4W2hJFN_Wh0DNVPQEYGtweNsqvTXVtwE8FXR300-Ut-npgS4");
//open the connection
URLConnection ucon = url.openConnection();
//buffer the download
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is,128);
ByteArrayBuffer baf = new ByteArrayBuffer(128);
//get the bytes one by one
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
mydb.execSQL("INSERT INTO " + TABLE + "(IMAGE) VALUES('" + baf.toByteArray() + "')");
mydb.close();
当我尝试检索图像时,我收到以下错误
工厂返回null
我的选择查询就是这个
mydb = openOrCreateDatabase(DBNAME, Context.MODE_PRIVATE,null);
Cursor allrows = mydb.rawQuery("SELECT * FROM "+ TABLE, null);
if(allrows.getCount() > 0){
allrows.moveToNext();
System.out.println("3333");
ImageView myImage = (ImageView) findViewById(R.id.ImageView01);
byte[] bb = allrows.getBlob(1);
System.out.println("VVV " + bb);
//convert it back to an image
ByteArrayInputStream imageStream = new ByteArrayInputStream(bb);
Bitmap theImage = BitmapFactory.decodeStream(imageStream);
myImage.setImageBitmap(theImage);
//myImage.setBackgroundResource(R.drawable.icon);
System.out.println("3333");
//myImage.setImageBitmap(BitmapFactory.decodeByteArray(bb, 0, bb.length));
}
请任何人帮忙。
答案 0 :(得分:2)
我使用decodeByteArray方法
byte[] userPic1Blob = cursor.getBlob(cursor.getColumnIndex(SqlConstans.USER_PIC1_BLOB));
if(userPic1Blob != null && userPic1Blob.length > 0){
Bitmap bm = BitmapFactory.decodeByteArray(userPic1Blob, 0, userPic1Blob.length);
imageView.setImageBitmap(bm);
}