• 고객센터
  • 교육
  • 매뉴얼
  • 데모
  • 제품소개
조회 수 : 986
2009.01.21 (21:49:56)
원인은 찾았습니다.


            GauceDataSet dSet = new GauceDataSet();

            pstmt.execute();
            rs = pstmt.getResultSet();
            ResultSetMetaData metaData = rs.getMetaData();

           // 메타데이터를 이용하여 가우스 컬럼정의
           생략.....

           // RS를 GauceData에 셋팅
           while(rs.next())
           {
                GauceDataRow gauceRow = dSet.newDataRow();

                for(int i=1;i<columCount+1;i++)
                {
                     gauceRow.addColumnValue( rs.getObject(i) );
                }
                dSet.addDataRow(gauceRow);
            }

            dSet.flush();

            문제는 gauceRow.addColumnValue( rs.getObject(i) ); 가 문제였습니다.

            이걸..

            if( rs.getObject(i)  instanceof java.lang.String )
            {
                    gauceRow.addColumnValue( rs.getString(i) );
            }
            else
            {
                    gauceRow.addColumnValue( rs.getObject(i) );
            }

            로 분리를 하니 정상적으로 데이터가 보여집니다.
          
특이한건 이런 경우 gauceRow.addColumnValue( rs.getObject(i) );  로 처리를 하더라도 처음에는 비정상적으로 값이 안보이고(데이터셋의 컬럼은 정확하고 데이터의 값이 제대로 안박히는 현상)
그러다 다시 조회를 하면 정상적으로 값이 보여짐.....

이게 시스템에 따라 전혀 문제가 안되는경우도 있고.. (개발에서는 한번도 문제된적이 없음)
운영에서는 처음에만 그러고 나중에는 정상적으로 보여짐..

하여간 대략 이런 현상이 발생되었습니다.      

첨부한 화면을 보시면 알겠지만 데이터의 컬럼의 정의는 잘되었고 데이터 String 값에 대해서만 값이 제대로 안나오고 나머지 숫자형은 제대로 보였습니다.
to_char() 로 해서 숫자를 문자로 바뀐데이터는 4000 으로 길이가 설정되어지고
String 255로 된것들에 한해서 gauceRow.addColumnValue( rs.getObject(i) ); 에서 값이 제대로 셋팅이 못되었다란 것이였죠..

일단 개발에서는 전혀 그런 문제가 없다가 운영에서 그런현상이 발생하고 아마도 뭔가 JDK 버전의 차이지 않을까 생각합니다.

그럼 수고하세요..
 
Tag List
XE Login