微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用PostgreSql在Ireports中显示图像

我试图将图像从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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐