-
ResultSet에서 LONG VARCHAR 읽어오기Data Base/MySQL 2007. 11. 26. 17:51
String data = null; //스트림으로 읽어 온 데이터를 저장한다.
java.io.Reader reader = null; //LONG VARCHAR 데이터를 읽어 올 스트림
try{
reader = rs.getCharacterStream("FIELD"); //스트림을 읽어옴
if(reader ! = null ){
//스트림에서 읽어 온 데이터를 저장할 버퍼
StringBuffer buff = new StringBuffer();
char[] ch = new char[512];
int len = -1;
//스트림에서 데이터를 읽어와 버퍼에 저장한다.
//reader로부터 데이터를 읽어와 StringBuffer에 저장한다.
while(len = reader.read(ch)) != -1){
buff.append(ch,0,len);
}
//버퍼에 저장된 내용을 String으로 전환
data = buff.toString();
}
}catch(IOException ex){
//예외발생
//reader.read()메소드는 IOException을 발생할 수 있다.
}finally{
if(reader != null) try {reader.close();} catch(IOException ex){}
}
//...data를 사용
===================================================================
<%@ page contentType="text/html;charset=euc-kr" %><%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection" %>
<%@ page import = "java.sql.Statement" %>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException" %>
<%@ page import = "java.io.Reader" %>
<%@ page import = "java.io.IOException" %><%
String memberID = request.getParameter("memberID");
%>
<html>
<head><title>회원 정보</title></head>
<body><%
Class.forName("com.mysql.jdbc.Driver");Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
String jdbcDriver = "jdbc:mysql://localhost:3306/chap11?useUnicode=true&characterencoding=euc-kr";
String dbUser = "jspexam";
String dbPass = "jspex";
String query = "select * from MEMBER_HISTORY where MEMBERID = '" + memberID + " ' ";
conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
stmt = conn.createStatement();
rs = stmt.executeQuery(query);
if(rs.next()) {
%>
<table border="1">
<tr>
<td>아이디</td><td><%= memberID %></td>
</tr>
<tr>
<td>히스토리</td>
<td>
<%
String history = null;
Reader reader = null;
try {
reader = rs.getCharacterStream("HISTORY");
if (reader != null) {
StringBuffer buff = new StringBuffer();
char[] ch = new char[512];//한번에 512 바이트 만큼 읽어 온다.
int len = -1;
while( (len = reader.read(ch)) != -1) {
//(reader.read(ch))
//=>ch 배열의 문자열 수를 읽어 옵니다.
//반환타입은 읽힌 문자수를 반환한다.
//읽던 글자의 마지막에 커서를 옮겨놓고 다음에 거기서부터 시작한다.
//while문에서 나가는 조건을 잘 모르겠네;;
System.out.println((len = reader.read(ch)));
buff.append(ch, 0, len);
}
history = new String(buff.toString().getBytes("8859_1"),"KSC5601");
}
} catch(IOException ex) {
out.println("예외 발생:"+ex.getMessage());
} finally {
if (reader != null) try { reader.close(); } catch(IOException ex) {}
}
%>
<%= history %>
</td>
</tr>
</table>
<%
}else{
%>
<%= memberID %> 회원의 히스토리가 없습니다.
<%
}
}catch(SQLException ex){
%>
에러 발생 : <%=ex.getMessage() %>
<%
}finally{
if(rs != null) try{rs.close();}catch(SQLException ex) {}
if(stmt != null) try {stmt.close();}catch(SQLException ex){}
if(conn != null) try {conn.close();}catch(SQLException ex){}
}
%>
</body>
</html>=====================================================================
'Data Base > MySQL' 카테고리의 다른 글
java.lang.ClassNotFoundException: org.gjt.mm.mysql.Driver (0) 2008.03.12 Mysql 설치한 후... (0) 2008.03.07 MySQL commend 출력 및 명령어 (0) 2007.11.28 MySQL에서 이런 오류가 발생해서 봤는데... (0) 2007.11.26 데이터 베이스 식별을 위한JDBC URL (0) 2007.11.23 한글 깨짐을 server.xml로 제어하는 방법 (0) 2007.11.23 MySQL 한글깨짐 방지 및 처리 (0) 2007.11.22