프로그래밍/Database

MySQL LONG VARCHAR 읽기

Jay22 2017. 1. 19. 11:41
반응형

SQL의 LONGVARCHAR 타입은 대량의 텍스트 데이터를 저장할 때 사용되며, ResultSet에서 LONGVARCHAR타입의 데이터를 읽어오기 위해서는 getCharacterStream() 메서드를 사용해야 한다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<%
            String history = null;
            Reader reader = null;
            try {
                reader = rs.getCharacterStream("HISTORY");
                
                if (reader != null) {
                    StringBuffer buff = new StringBuffer();
                    char[] ch = new char[512];
                    int len = -1;
                    
                    while( (len = reader.read(ch)) != -1) {
                        buff.append(ch, 0, len);
                    }
                    
                    history = buff.toString();
                }
            } catch(IOException ex) {
                out.println("익셉션 발생:"+ex.getMessage());
            } finally {
                if (reader != nulltry { reader.close(); } catch(IOException ex) {}
            }
%>
cs


line 5 - HISTORY 는 테이블안의 long varchar 타입의 이름이다.


line 8 - 스트림에서 읽어올 데이터를 저장하라 버퍼를 설정한다.


line 12 - 스트렘에서 데이터를 읽어와 버퍼에 저장한다. reader로 읽어서 Stringbuffer에 저장한다.


line 16 - 버퍼에 저장된 내용을 String으로 변환한다.



참고)


오라클에서는 long varchar를 long으로 표시하며 mysql에서는 mediumtext로 표시한다. 오라클의 long타입을 읽어 올 때 이름만 보고서 ResultSet의 getLong() 을 사용하는데 오라클의 long은 long varchar이므로 getCharacterStream() 메서드를 사용해서 읽어와야 한다.

하지만 다수의 드라이버에서 getString()으로 읽어오는 것을 지원하고 있다. 예를들어 mysql 드라이버는 getString() 메서드를 사용해서 long varchar타입을 읽는것을 지원한다.


getString()을 사용해서 long varchar를 읽어올 수 있는 jdbc드라이버의 경우에는 복잡한 코드를 쓸 필요가 없어 더욱 간단하고 좋다.



반응형