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

时间:2014-03-31 13:31:58

标签: 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()也不起作用。

感谢您的帮助。

修改

Clob.getSubString(long,int)方法在后面的测试中运行良好,我不知道为什么之前没有用。所以我用过:

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

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

2 个答案:

答案 0 :(得分:5)

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

<强>第一

一个是在Textfield表达式中放置以下语句。捕获到这个字段应该没有回车和换行符来显示完整的字段值。我通过sql查询填充该字段。

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

<强>第二

在类中创建方法,其中InputStream转换为ByteArrayOutputStream并将其转换为String,然后使用{{Textfield表达式调用此方法1}}传入的值。

在这两种情况下,该字段都应声明为CLOB

了解更多details

答案 1 :(得分:0)

环顾四周,终于,我找到了解决此问题的方法。 简单,如果您使用的是Ireport Designer,请转到Report Inspector section -> Fields -> click,将要修改的字段从“属性”更改为“ {@ 1}}