java-使用SQLOpenHelper将BLOB存储在Android的SQLite中

有没有一种方法可以使用sqlOpenHelper将BLOB存储到Androidsqlite中?

我的InputStream类型的BLOB.

最佳答案
sqlite不支持流式BLOB或CLOB数据.您有四个选择:

>将InputStream转换为字节[].仅当您有足够的内存时才有效(请参阅下文).
>使用FileOutputStream或支持流传输的Android API
>将数据分成小块,然后存储在sqlite中
>使用适用于Android并支持流式传输的数据库.我只知道H2 database.但是请注意,Android对H2的支持是非常新的.在这种情况下,您需要使用JDBC API,并且可能要启用LOBs in the database,否则每个大型BLOB都存储在单独的文件中.

要将InputStream转换为字节数组,可以使用:

public static byte[] readBytesAndClose(InputStream in) throws IOException {
    try {
        int block = 4 * 1024;
        ByteArrayOutputStream out = new ByteArrayOutputStream(block);
        byte[] buff = new byte[block];
        while (true) {
            int len = in.read(buff,block);
            if (len < 0) {
                break;
            }
            out.write(buff,len);
        }
        return out.toByteArray();
    } finally {
        in.close();
    }
}

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...