병갈이 블록

LONG VARCHAR타입(큰~) 자료형 읽어오기 본문

IT(Old)/JSP 공부 기록

LONG VARCHAR타입(큰~) 자료형 읽어오기

woojang 2017. 7. 1. 14:27

아주 긴 글이 저장된 LONG VARCHAR은 파일 Stream형태로 읽어들인다.

java.io.Reader 클래스를 임포트한다.

Statement객체에서 제공하는 getCharacterStream(String name) 메서드를 이용하여 Reader타입의 스트림객체를 Reader변수에 리턴한다.

String str = null;

Reader reader = null;

try{

reader = rs.getCharacterStream("NAME");            //데이터베이스에서 읽어 올 칼럼의 이름을 적는다.;

if(reader != null){                                           //데이터베이스 조회결과가 있으면

StringBuilder buff = new StringBuilder();        //문자열을 저장하여 String 변수에 전달할 버퍼변수.

cahr[] ch = new char[512];                           //reader와 buff사이에 사용될 변수.

int len = -1;                                            //buff에서 사용될 문자열 위치를 저장하는 변수.

while((len = reader.read(ch)) != -1){        //read메서드는 reader에 읽혀진 문자를 매개변수인 ch에 하나씩 전달하고 전달된

문자의 위치를 반환한다. 더이상 읽어들일 문자열이 없을때 -1을 반환.

buff.append(ch, 0, len);                //여기에 사용된 append메서드는 ch에 있는 문자열에서 ch변수의 0번 위치를 기준으로

      len번째 문자열을 buff변수로 읽어온다.  

}

str = buff.toString();                        //toString()메서드로 buff에 있는 문자를 String형태로 변환하여 반환한다.

}

}catch(...){...}


주의!!

오라클에서 LONG VARCHAR은 LONG형으로 표시되고

MySQL에서 LONG VARCHAR은 mediumtext으로 표시된다.

즉, 오라클에서 LONG형 자료를 읽어올때도, MySQL에서 mediumtext를 읽어올 때도 원칙적으로는 

getCharacterStream메서드로 읽어와야한다.

MySQL의 경우 mediumtext, tinytext, text, longtext 이 네가지 타입의 text타입을 지원하고 이들은 getCharacterStream으로 읽어와야한다.


but, 다수의 JDBC드라이버는 getString메서드로 getCharacterStream메서드의 역할을 대신하게 지원한다.

MySQL의 경우도 LONG VARCHAR을 getString메서드로 읽어올 수 있게 지원한다.


'IT(Old) > JSP 공부 기록' 카테고리의 다른 글

리플렉션에 관해서...링크  (0) 2017.07.16
커스텀 태그  (0) 2017.07.04
JDBC 등록 과정  (0) 2017.06.30
JDBC 드라이버 클래스 이름  (0) 2017.06.30
MySQL  (0) 2017.06.30
Comments