哪个字段适合图像。 varchar或blob以及为什么?
我使用以下代码转换图片:
public String getStringFromBitmap(Bitmap bitmap) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.JPEG, 70, stream);
return Base64.encodeToString(stream.toByteArray(), Base64.NO_WRAP);
}
public Bitmap getBitmapFromString(String imageString) {
byte[] decodedString = Base64.decode(imageString, Base64.NO_WRAP);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0,
decodedString.length);
return decodedByte;
}
我的字段是varchar。这样的方式更好吗?或者我必须改变方式
答案 0 :(得分:4)
两者都不好。
图像数据往往会占用大量空间,而且当从数据库中提取大量数据时,Android sqlite包装器(具体为CursorWindow
)效果不佳。
相反,将二进制数据存储在文件系统中,只存储数据库中的路径。
答案 1 :(得分:0)
SQLite中没有varchar(确切)!!!(SQLite DataType)
NULL。该值为NULL值。
INTEGER。该值是有符号整数,存储在1,2,3,4,6或8中 字节取决于值的大小。
REAL。该值是浮点值,存储为8字节IEEE 浮点数。
TEXT。该值是使用数据库编码存储的文本字符串 (UTF-8,UTF-16BE或UTF-16LE)。
BLOB。该值是一个数据块,完全按照输入的方式存储。
看起来blob比其他图像更好