У меня есть sqlite дБ с BLOB столбец содержит изображения.Я искал много решений без удачи вообще.Я установил для поля изображения (столбца) класс java.io.InputStream
, однако, я получаю сообщение об ошибке: "jasperreports.engine.JRException: Unable to get value for result set field "image" of class java.io.InputStream"
Я нашел этот раствор ниже @joyo.Он говорит, чтобы сначала преобразовать BLOB в двоичный файл.Я не могу найти, чтобы сделать это.Я думаю, что это более sql вещь.
Как показать изображение объекта blob с помощью JasperReports из базы данных sqlite?
Что мне нужно сделать, чтобы преобразовать BLOB в двоичный или любой другой обходной путь для динамического отображения изображения в jaspersoft?
Я пытался установить класс поля в BLOB или InputStream, и это дает мне ошибку при загрузке полей, даже если они не используются.
ByteInputStream позволяет отображать файл, но я не знаюкак работать с выражением изображения в этом случае?
Мой код выглядит как
<?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_3" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
<queryString language="SQL">
<![CDATA[SELECT PicT1 FROM HTNlist]]>
</queryString>
<field name="PicT1" class="java.io.InputStream"/>
<detail>
<band height="60" splitType="Stretch">
<image>
<reportElement x="252" y="10" width="50" height="50"/>
<imageExpression><![CDATA[$F{PicT1}]]></imageExpression>
</image>
</band>
</detail>
</jasperReport>
Это дает мне ошибку говорит
net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRException: Unable to get value for result set field "PicT1" of class java.io.InputStream.
at com.jaspersoft.studio.editor.preview.view.control.ReportController.fillReport(ReportController.java:536)
at com.jaspersoft.studio.editor.preview.view.control.ReportController.access$17(ReportController.java:511)
at com.jaspersoft.studio.editor.preview.view.control.ReportController$1.run(ReportController.java:429)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
Caused by: net.sf.jasperreports.engine.JRException: Unable to get value for result set field "PicT1" of class java.io.InputStream.
at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:385)
at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:1501)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1402)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1378)
at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1194)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:108)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:615)
at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFill.run(BaseFillHandle.java:135)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLException: not implemented by SQLite JDBC driver
at org.sqlite.Unused.unused(Unused.java:29)
at org.sqlite.Unused.getBlob(Unused.java:96)
at net.sf.jasperreports.engine.JRResultSetDataSource.readBytes(JRResultSetDataSource.java:703)
at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:251)
... 8 more