java-使用SQLOpenHelper将BLOB存储在Android的SQLite中
2019年12月25日
作者:佚名
有没有一种方法可以使用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中 所遇到的程序开发问题。
如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。