找回密码
 立即注册

QQ登录

只需一步,快速开始

muhuiru

社区贡献组

65

主题

203

帖子

580

积分

社区贡献组

积分
580

活字格认证

muhuiru
社区贡献组   /  发表于:2016-6-1 15:39  /   查看:3453  /  回复:4
本帖最后由 Lenka.Guo 于 2016-6-1 17:17 编辑


绑定sqlite blob二进制图片不显示

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1金币 +1000 收起 理由
Lenka.Guo + 1000 赞一个!

查看全部评分

4 个回复

倒序浏览
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-6-1 17:04:07
沙发
您好,谢谢您的反馈,问题已经重现,已经将该问题以高优先级反馈给产品组,有解决方案会立即给您回复。
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-6-6 13:54:20
板凳
您好,
通过与产品组的沟通已确认该问题产生的原因是:SQLite ODBC 驱动,将二进制流返回成了字符串类型,导致图片无法显示,现有的解决方案是,将字符串通过脚本,将字符串转回 二进制。
  1. Public Function BlobToByte(ByVal x) As Byte()
  2.         Dim oleObject As Byte() = HexToByte(x.Substring(2, x.Length - 3))  'remove envelope sqlite
  3.        
  4.         Dim image As Byte() = New Byte(oleObject.Length - 78) {}
  5.         Array.Copy(oleObject, 78, image, 0, oleObject.Length - 78) ' remove header Bitmap Image Paint.Picture
  6.        
  7.         Return image
  8. End Function


  9. Function HexToByte(ByVal hex As String) As Byte()
  10.         Dim bytes As Byte() = New Byte(hex.Length \ 2) {}
  11.         For i As Integer = 0 To hex.Length - 2 Step 2
  12.                 bytes(i / 2) = Convert.ToByte(hex.Substring(i, 2), 16)
  13.         Next
  14.         Return bytes
  15. End Function
复制代码

然后在设置TextBox的Value来调用脚本代码:
  1. =code.BlobToByte(Fields!Picture.Value)
复制代码



Demo下载(下载之后,修改数据库路径,就可以运行了):



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
muhuiru
社区贡献组   /  发表于:2016-6-6 16:44:51
地板
好的 谢谢
回复 使用道具 举报
Lenka.Guo讲师达人认证 悬赏达人认证
超级版主   /  发表于:2016-6-6 17:16:55
5#
本帖最后由 Lenka.Guo 于 2016-6-6 17:19 编辑

不客气~~  谢谢您的反馈奖励1000金币~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部