2013년 8월 10일 토요일

Raw/Long Raw Type에 관하여

Oracle LongRaw 데이터 타입에 관하여

오라클자바커뮤니티에서 설립한 오엔제이프로그래밍 실무교육센터
(오라클SQL, 튜닝, 힌트,자바프레임워크, 안드로이드, 아이폰, 닷넷 실무전문 강의)  



1. 이진 Data또는 Byte문자열을 위한것

2. RAW및 LONG RAW는 Data전송시 인스턴스에 사용자 세션을 접속하는 SQL*Net과
Inport/Export Utility가 문자변환을 수행하지 않는다는 점을 제외하면 Varchar2 Data
Type과 같은 가변길이 Data 유형이다.

3. Oracle이 RAW나 LONG RAW를 CHAR로 상호 변환하는 경우 한 문자에 4bit가 해당되는
16진수 형태로 표현된다.(11001011 은 'CB')

4.  Long Raw는 Index될수 없으나 Raw는 Index 될수있다.

--------------------------
자바에서 LongRaw 예
--------------------------
1. 읽을때(detail이란 컬럼이 longraw 입니다.)

try{
            InputStream vIcode        =null;
            BufferedReader vvcode    =null;

            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(" select name,title,detail,re_id,ip,count,to_char(ilsi,'dd/MON/yyyy(hh:mi)'),path,e_mail,root_id,depth  from db_board where id = "+szID);
            rs.next();
            szName = rs.getString(1);
            szTitle = rs.getString(2);
           
            szDetail= hangul.han(new String(rs.getBytes(3),0));           
            szRe_Id = rs.getString(4);
            szIp = rs.getString(5);
            iCount = rs.getInt(6);
            szIlsi = rs.getString(7);
            szPath = rs.getString(8);
            szE_mail = rs.getString(9);
            szRoot_Id = rs.getString(10);
            szDepth = rs.getString(11);
            iCount++;
            rs.close();
            stmt.executeUpdate(" update db_board set count=count+1 where id = "+szID);
            stmt.close();
   
      }

2. 저장하는 예

PreparedStatement ps = con.prepareStatement("insert into db_board(id,re_id,name,title,detail,passwd,count,ip,ilsi,e_mail,is_re,board_gbn,path,root_id,depth) values (?,0,?,?,?,?,0,?,sysdate,?,'N',?,?,?,0)");

          ps.setInt(1,iId);
          ps.setString(2,hangul.han(szName));
          ps.setString(3,hangul.han(szTitle));

//////////////////////////////////////////////////////////////////////////
          StringBuffer szbWriteDetail = new StringBuffer();
          for( int i = 0,len=szDetail.length() ; i < len ; i++){
              if( szDetail.charAt(i) == ' ')
                  szbWriteDetail.append(" ");
              else if( szDetail.charAt(i) == '<')
                  szbWriteDetail.append("<");
              else if( szDetail.charAt(i) == '>')
                  szbWriteDetail.append(">");
              else if( szDetail.charAt(i) == '\n')
                  szbWriteDetail.append("<br>");
              else
                  szbWriteDetail.append(szDetail.charAt(i));
          }
////////////////////////////////////////////////////////////////////////////

          StringBufferInputStream abc = new  StringBufferInputStream(szbWriteDetail.toString());
          ps.setBinaryStream(4,abc,szbWriteDetail.length());
          ps.setString(5,szPasswd);
          ps.setString(6,szIp);
          ps.setString(7,szE_mail);
          ps.setString(8,szBoard_Gbn);
          ps.setString(9,szPath);
          ps.setInt(10,iId);

          ps.executeUpdate( );

댓글 없음:

댓글 쓰기