加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用PostgreSql在Ireports中显示图像

发布时间:2020-12-13 16:01:13 所属栏目:百科 来源:网络整理
导读:我试图将图像从PostgreSQL数据库加载到jaspersoft ireports(4.0),但我收到一个错误. 在PostgreSQL中,图像存储为bytea对象.在ireports中,我将image字段的属性更改为java.io.InputStream. 将图像放入报表后,设置了以下属性: 表达式类:java.io.InputStream 图
我试图将图像从PostgreSQL数据库加载到jaspersoft ireports(4.0),但我收到一个错误.

在PostgreSQL中,图像存储为bytea对象.在ireports中,我将image字段的属性更改为java.io.InputStream.

将图像放入报表后,设置了以下属性:

表达式类:java.io.InputStream
图像表达:图像字段

我还尝试了this教程在ireport中显示blob图像.

显示以下错误:

Error?filling?print...?Image?read?failed. 
Setting?up?the?file?resolver...?
net.sf.jasperreports.engine.JRException:?Image?read?failed.?
????at?net.sf.jasperreports.engine.util.JRJdk14ImageReader.readImage(JRJdk14ImageReader.java:73)?
????at?net.sf.jasperreports.engine.util.JRImageLoader.loadImage(JRImageLoader.java:245)?
????at?net.sf.jasperreports.engine.JRImageRenderer.getImage(JRImageRenderer.java:476)?
????at?net.sf.jasperreports.engine.JRImageRenderer.getDimension(JRImageRenderer.java:512)?
????at?net.sf.jasperreports.engine.fill.JRFillImage.fitImage(JRFillImage.java:1251)?
????at?net.sf.jasperreports.engine.fill.JRFillImage.prepare(JRFillImage.java:1173)?
????at?net.sf.jasperreports.engine.fill.JRFillElementContainer.prepareElements(JRFillElementContainer.java:329)?
????at?net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:419)?
????at?net.sf.jasperreports.engine.fill.JRFillBand.fill(JRFillBand.java:378)?
????at?net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2038)?
????at?net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:760)?
????at?net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:270)?
????at?net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)?
????at?net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)?
????at?net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845)?
????at?net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58)?
????at?net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)?
????at?net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)?
????at?com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:877)?
????at?org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)?
????at?org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)?
Print not filled. Try to use an EmptyDataSource...

解决方法

在PostgreSQL中,bytea类型不是BLOB,并且您不能使用流.在SQL标准术语中,它是一个字节字符串.它应该加载到Java中的字节数组.

如果要在PostgreSQL中使用BLOB技术,则必须使用大对象功能.

http://www.postgresql.org/docs/current/interactive/largeobjects.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读