哪个字段适合图像。 varchar或blob。源码

时间:2014-07-12 11:12:23

标签: android sqlite ormlite

哪个字段适合图像。 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。这样的方式更好吗?或者我必须改变方式

2 个答案:

答案 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比其他图像更好