Java 如何在iReport中显示CLOB(或BLOB)字符串?

Java 如何在iReport中显示CLOB(或BLOB)字符串?,java,jasper-reports,blob,ireport,clob,Java,Jasper Reports,Blob,Ireport,Clob,我需要在iReport中使用的文本字段中显示长度超过4000个字符的CLOB字段。我正在使用iReport 5.5.0版,我尝试将CLOB转换为InputStream,但没有成功,我得到的只是: java.io.ByteArrayInputStream@43842a66 我尝试了getSubString(long,int),但它只适用于小于4000个字符的字符串。stringValue()和toString()也不起作用 谢谢你的帮助 编辑: getSubString(long,int)方法在

我需要在iReport中使用的文本字段中显示长度超过4000个字符的CLOB字段。我正在使用iReport 5.5.0版,我尝试将CLOB转换为InputStream,但没有成功,我得到的只是:

java.io.ByteArrayInputStream@43842a66
我尝试了getSubString(long,int),但它只适用于小于4000个字符的字符串。stringValue()和toString()也不起作用

谢谢你的帮助

编辑:

getSubString(long,int)方法在我后面的测试中工作得很好,我不知道为什么它以前不工作。所以我用了:

$F{FIELD}.getSubString( (long)1, (int)$F{FIELD}.length() )

最终。这可能不是最好的选择,但我认为字符串的最大长度(2147483647)对于字段来说已经足够了。

我也遇到了同样的问题,我找到了以下解决方案

首先

一种是在
Textfield
表达式中放置以下语句。此字段应无回车符和换行符,以显示完整的字段值。我通过
sql
query填充字段

new BufferedReader(new InputStreamReader($F{FIELD_NAME})).readLine()

在类中创建一个方法,其中,
InputStream
中的
ByteArrayOutputStream
转换为
String
,然后在
Textfield
表达式中调用此方法,并传入
CLOB

在这两种情况下,字段都应声明为
java.io.InputStream


更多信息。

在到处查看之后,我终于找到了解决此问题的方法。 如果您使用的是Ireport Designer,只需转到
报告检查器部分->字段->单击
要修改的字段,将属性字段类更改为
java.lang.String