android blob类型数据,从SQLite数据库android中检索BLOB

我有一个数据库,里面有一些图像,保存为BLOB.

到目前为止,我对数据库没有任何问题,我尝试检索BLOB,就像我对任何其他数据一样,但它不起作用:

Cursor c = mDb.query(" ... ");

c.moveToFirst();

ByteArrayInputStream inputStream = new ByteArrayInputStream(c.getBlob(0));

Bitmap b = BitmapFactory.decodeStream(inputStream);

问题是当程序试图获取“c.getBlob(0)”的信息时,我得到一个异常.它也不适用于“byte [] b = c.getBlob(0)”.

可能的原因:

>文件太大了? (1.2MB)

>我必须做一些其他事情来配置它的BLOB类型?

谢谢!

解决:当我不小心尝试其他文件时,它工作!然后我意识到文件较小(小于1Mb),所以问题似乎是大小.

现在我的问题是,我可以配置它以使BLOB支持大文件吗?

谢谢!

解决方法:

在尝试检索任何内容之前,您是否确认光标中确实存在数据?

if(c.getCount()> 0){做某事}

如果你不这样做,那么你将尝试检索已经为空的东西,这是一个很大的否定

此外,当您获取元素时,不是这样检索的好习惯:c.getBlob(0)

其他信息

这样做的原因是,如果您决定更改列并更改顺序,这将会严重影响您.

我的建议是让一个辅助类中存在的静态变量引用你定义的列名,如下所示:

c.getString(c.getColumnIndex(String columnName))

这是更好的做法,因为您可以通过引用名称轻松更改数据库.

阅读我的帖子,了解如何处理数据库并间接调用数据库.你将会感谢你将避免的所有头痛.

同样在发布问题时,错误的logcat有助于更快地解决问题.

标签:android,sqlite,image,blob

来源: https://codeday.me/bug/20190826/1735392.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值