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

java-使用SQLOpenHelper将BLOB存储在Android的SQLite中,第1张

概述有没有一种方法可以使用SQLOpenHelper将BLOB存储到Android的SQLite中?我的InputStream类型的BLOB.最佳答案SQLite不支持流式BLOB或CLOB数据.您有四个选择:>将InputStream转换为字节[].仅当您有足够的内存时才有效(请参阅下文).>使用FileOutputStream或支持流传输的And

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

我的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();    }}
总结

以上是内存溢出为你收集整理的java-使用SQLOpenHelper将BLOB存储在Android的SQLite中 全部内容,希望文章能够帮你解决java-使用SQLOpenHelper将BLOB存储在Android的SQLite中 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1145405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存