如何使用来自sqlite数据库的JasperReports显示blob对象图像?

时间:2017-02-18 08:43:05

标签: sqlite jasper-reports

我在我的应用程序中使用ireport工具。需要在报告上显示图像。我在数据库中有一个blob对象字段来存储图像。我需要在报告中将blob对象字段显示为图像。

但是,如果我检索除Blob之外的任何其他数据

,它工作正常
<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports       http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4_2" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="6bf1e8fc-5bd2-495a-abca-8c4d501c73af">
   <queryString><![CDATA[SELECT image FROM myimage]]></queryString>
   <field name="image" class="java.io.InputStream"/>
   <detail>
       <band height="125" splitType="Stretch">
            <image>
                <reportElement x="130" y="20" width="310" height="88" uuid="8b07de5d-ac9e-4245-9ca1-ccd6fd3fe993"/>
               <imageExpression><![CDATA[$F{image}]]></imageExpression>
            </image>
        </band>
    </detail>
</jasperReport>

我收到此错误: "net.sf.jasperreports.engine.JRException: Unable to get value for result set field "image" of class java.io.InputStream"

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我找到了解决方案。解决问题的步骤:

  1. 将属性类型从Blob更改为二进制
  2. 更改字段的类型:<field name="image" class="java.io.InputStream"/>

答案 1 :(得分:0)

同意@joyo。我跟着他的榜样,它奏效了。这是他的意思的完整例子(以防万一有兴趣):

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report1" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="38e603dd-e931-410d-b545-b16f01f0b6a8">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <queryString>
        <![CDATA[select * from rcis.invoice_print]]>
    </queryString>
    <field name="ORG_LOGO" class="java.io.InputStream"/>
    <detail>
        <band height="125" splitType="Stretch">
            <image>
                <reportElement x="168" y="23" width="100" height="50" uuid="dab25674-c16b-4866-88d0-c97695108f60"/>
                <imageExpression><![CDATA[$F{ORG_LOGO}]]></imageExpression>
            </image>
        </band>
    </detail>
</jasperReport>