【问题标题】:Which field is suitable for image. varchar or blob. sqlite哪个领域适合图像。 varchar 或 blob。 sqlite
【发布时间】:2014-07-12 11:12:23
【问题描述】:

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

【问题讨论】:

  • 向google叔叔询问:android bitmap sqlite,你会找到最好的解决方案
  • varchar 用于字符数据,blob 用于二进制数据(blob = 二进制大对象)。由于图像是二进制数据...
  • 当试图将图像保存在数据库中时,我遇到了导致窗口限制为 2M 的错误。

标签: android sqlite ormlite


【解决方案1】:

两个都不好。

图像数据往往会占用大量空间,当从数据库中提取大量数据时,Android sqlite 包装器(特别是CursorWindow)不能很好地工作。

相反,将二进制数据存储在文件系统中,并在数据库中存储路径。

【讨论】:

    【解决方案2】:

    SQLite 中没有 varchar(exactly)!!!(SQLite DataType)

    空。该值为 NULL 值。

    整数。该值是有符号整数,存储在 1、2、3、4、6 或 8 中 字节数取决于值的大小。

    真实。该值是一个浮点值,存储为 8 字节 IEEE 浮点数。

    文本。该值是一个文本字符串,使用数据库编码存储 (UTF-8、UTF-16BE 或 UTF-16LE)。

    BLOB。该值是一团数据,完全按照输入的方式存储。

    似乎 blob 比其他图像更好

    【讨论】:

    • SQLite 不强制数据类型,它只是提示,如果它知道如何进行转换。 sqlite.org/faq.html#q3
    • @ikkuh 是的,我知道,sqlite 转换通用数据类型名称以最大限度地提高 SQLite 和其他数据库引擎之间的兼容性,我在回答中说没有 varchar("exactly")....
    猜你喜欢
    • 2010-11-15
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-13
    相关资源
    最近更新 更多