如何从数据库插入图像?

Nik*_*mov 3 mysql database image jasper-reports

我希望在Jaspersoft Studio的报告中插入来自数据库的数据.
该JPG图像都在现场保存在MySQL imgdata类型LONGBLOB.
我试图把这个表达式放在Image元素中:

  1. $F{imgdata}
  2. MyUtil.getInputStream($F{imgdata})

在第一种情况下,我收到此错误:

net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRException: Unknown image source class [B
Run Code Online (Sandbox Code Playgroud)

......在第二种情况下,这个错误:

net.sf.jasperreports.engine.JRException:
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error
evaluating expression :  Source text :
MyUtil.getInputStream($F{imgdata})
Run Code Online (Sandbox Code Playgroud)

我的问题:如何将数据库中的图像插入到JasperReports的报告中?

小智 10

打开.jrxml文件的XML视图.然后找到与此类似的代码

<field name="image" class="java.lang.Object"/>  
/* "image" must be replaced by your actual field name */
Run Code Online (Sandbox Code Playgroud)

并将其更改为

<field name="image" class="java.io.InputStream"/>
Run Code Online (Sandbox Code Playgroud)


Nik*_*mov 5

看来我自己解决了这个问题.

以下是我做的步骤:

1)图像报告字段的表达式应为:$ F {imgdata}

(注意:imgdata是存储图像数据的数据库字段的名称)

2)打开报表的"数据集和查询对话框",将imgdata字段的类类型从java.lang.Object更改为java.io.InputStream(参见截图 ---抱歉,我没有足够的信誉点发布图片).关闭对话框.

3)切换到Preview-Tab生成报告.现在您应该在报告中看到图像.