当前位置: 首页 > 知识库问答 >
问题:

使用普通JDBC从DB检索图像时修改的Blob信息

东方修谨
2023-03-14

null

null

  1. 在简单的java应用程序中读取图像,
  2. 将图像转换为字节数组byte[]imageEncodedBytes=Baos.TobyteArray()
  3. 将其存储到远程DB2数据库中(使用的技术不是imp,所以我现在使用的是纯jdbc)
  4. 从数据库回读它,并
  5. 将其转换回来,以确保图像作品的再创作。(我可以在任何图像查看器中打开重新创建的新图像)

问题

问题发生在步骤5。

    null

null

ByteArrayInputStream bais = new ByteArrayInputStream(decodedArray);
//Writing to image
BufferedImage imag=ImageIO.read(bais); // Line of failure. No registered provider able to read bais
ImageIO.write(imag, "jpg", new File(dirName,"snap.jpg"));

null

我已经参考了以下链接进行验证1。在DB2中插入图像。这里的链接提供了洞察力,但我无法确定如何注册ImageReader。4.在将映像插入DB2时,我使用以下查询

 Statement st = conn.createStatement();
st.executeUpdate("INSERT INTO PHOTO (ID,PHOTO_NM,PHOTO_IM, THMBNL_IM) " + "VALUES (1,'blob("+bl+")',blob('"+bl+"')")

请协助,我可能遗漏了一些非常琐碎的东西,但我不知道是什么。任何帮助/指针都将大有帮助。提前道谢。

共有1个答案

燕元明
2023-03-14

这个决议是我一直在做的一个变通办法。

我已经使用jdbcTemplates来解决这个问题。jdbc模板的lobHandler对象提供了一种管理Blob的简单方法。

使用Spring Lob处理程序解析的步骤

  1. )创建了数据源
  2. )配置了Jdbc模板以使用数据源
  3. )使用lobHandler代码执行insert查询

null

 jdbcTemplate = new JdbcTemplate(dataSource);
 jdbcTemplate.execute("INSERT INTO PHOTO (PHOTO_IM) VALUES (?)",
                      new AbstractLobCreatingPreparedStatementCallback(lobHandler) {                         
                              protected void setValues(PreparedStatement ps, LobCreator lobCreator) {                                                    
                              try {
                                 lobCreator.setBlobAsBinaryStream(ps, 1, bean.getImageOrig(), bean.getImageLength());                               
                                } catch (java.sql.SQLException e) {
                                    e.printStackTrace();
                                }     

                              }

                          }
                );

null

 类似资料:
  • 问题内容: 由于如何在JSP页面中从数据库检索和显示图像,我找到了一种从 db / blob 检索图像的很好的解决方案? 但这是在每个图像请求上使用 JDBC连接的 解决方案。 我正在使用 Spring 3 注释和 Hibernate 3 。 我试图通过我的’imageService’做类似的事情,它通过 ImageServlet类中 的注释自动装配,但是我得到了 nullPointerExcep

  • 问题内容: 我试图基于驻留在数据库上的信息创建PDF。知道我需要从Java检索TIFF图像,该图像作为BLOB存储在mysql数据库中。而且我不知道该怎么做。我找到的示例显示了如何检索它并将其另存为文件(但保存在磁盘上),并且需要驻留在内存中。 表格名称:IMAGENES_REGISTROS BLOB字段名称:IMAGEN 有任何想法吗? 问题答案: 在您的通话中: 或者,您可以致电: 正如Bal

  • 问题内容: 我最近问了另一个(相关的)问题,这导致了后续问题: 通读jQuery.ajax()文档(http://api.jquery.com/jQuery.ajax/),似乎可接受的dataTypes列表不包含图像。 我正在尝试使用jQuery.get(如果需要的话,也可以使用jQuery.ajax)来检索图像,将此图像存储在Blob中,然后在POST请求中将其上传到另一台服务器。当前,由于数据

  • 问题内容: 我正在重构一些旧代码,包括重写基本的mysql查询以使用PDO。 以下内容在所有浏览器和所有图像类型中均能出色发挥作用: 不幸的是,但是我使用PDO重写了它,但是它不起作用。我已经遍历了整个PDO文档和标准的Web搜索,但是所有建议/解决方案都无效。 如何使用PDO轻松地从MySQL中获取图像并显示图像? 编辑1: 马修·拉兹洛夫(Matthew Ratzloff)在下面给出了明显的答

  • 是否正确?现在,当我尝试从数据库中检索blob数据时,它每次都会更改,为什么?那么如何检索此图像呢?以下是我尝试过的代码: 我没有看到任何图像。为什么?请帮忙。谢谢

  • 问题内容: 我从动画gif中读取了分离的图像,我只需要对其进行更改,然后将其设置回文件,并与编写者一起另存为新文件。 我会很高兴为您提供任何帮助。 问题答案: Tanks @StanislavL 在评论中提供了链接(https://community.oracle.com/thread/1264385),这确实很有帮助。有我的解决方案: