I need to display a CLOB field with longer than 4000 characters in a text field using in iReport. I am using iReport version 5.5.0, I tried converting the CLOB to InputStream but it did not work, all I get is:
java.io.ByteArrayInputStream@43842a66
I tried getSubString(long,int) but it only works for strings smaller than 4000 chars. stringValue() and toString() also did not work.
Thanks for any help.
EDIT:
Clob.getSubString(long,int) method worked fine in my latter tests, I don't know why it didn't work before. So I used:
$F{FIELD}.getSubString( (long)1, (int)$F{FIELD}.length() )
eventually. It may not be the best option, but I figured max length of a String (2147483647) is more than enough for the field.
I had the same problem, and i found the following solutions.
First
one is placing the following statement in the
Textfield
expression. catch to this is the field should be free of carriage returns and line feeds to show the complete field value. I populate the field throughsql
query.Second
creating a method in a class where in the
InputStream
is converted toByteArrayOutputStream
and converting it toString
and then calling this method in theTextfield
expression withCLOB
value passed in.In both cases the field should be declared as
java.io.InputStream
.For more details.