2014-03-31 3 views
3

iReport를 사용하여 텍스트 필드에 4000자를 초과하는 CLOB 필드를 표시해야합니다. 나는 iReport로 버전 5.5.0을 사용하고, 내가 inputStream을 위해 CLOB로 변환 시도했지만 작동하지 않았다, 내가 가진 전부입니다iReport에 CLOB (또는 BLOB) 문자열을 표시하는 방법은 무엇입니까?

[email protected] 

내가 getSubString (긴, int)를 시도했지만 그것은 단지보다 작은 문자열을 작동 4000 자. stringValue() 및 toString()도 작동하지 않았습니다.

도움 주셔서 감사합니다.

편집 : 그 전에 작동하지 않는 이유

Clob.getSubString (긴, int) 메소드 내 후자의 테스트에서 잘 작동, 나도 몰라. 그래서 나는 다음과 같이 사용했다 :

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

결국. 그것은 최선의 선택이 아닐지도 모르지만, 나는 String의 최대 길이 (2147483647)가 필드에 충분하다고 생각했다.

답변

5

나는 같은 문제가있어서 다음과 같은 해결책을 찾았습니다. 먼저

하나

Textfield 표현에 다음 문을 배치합니다. 캐치 리턴과 줄 바꿈이 없어야 필드를 볼 수 있습니다. 나는 sql 쿼리를 통해 필드를 채 웁니다.

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

InputStreamByteArrayOutputStream로 변환하는 클래스의 생성 방법 및 String로 변환하고 전달 CLOB 치로 Textfield 발현이 메소드를 호출

둘째.

두 경우 모두 필드는 java.io.InputStream으로 선언되어야합니다.

details.

관련 문제