728x90
2단계 JSP만 list처리
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import = "java.sql.DriverManager" %> <%@ page import = "java.sql.Connection" %> <%@ page import = "java.sql.PreparedStatement" %> <%@ page import = "java.sql.ResultSet" %> <%@ page import = "java.sql.SQLException" %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>회원 리스트</title> </head> <body> <%= request.getRequestURI() %> <br> 회원 리스트 <br> <table width="100%" border="1"> <tr> <td>이름</td><td>아이디</td><td>권한</td><td>이름</td><td>이메일</td> </tr> <% Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; // ResultSet클래스형 데이터 타입으로 객체참조변수 rs를 선언하고 null로 초기화 //JDBC 프로그램 순서 //01단계 :드라이버 로딩 시작 Class.forName("com.mysql.jdbc.Driver"); //01단계 :드라이버 로딩 끝 try{ //02단계 :DB연결(Connection)시작 String jdbcDriver = "jdbc:mysql://localhost:3306/doublesdb?" + "useUnicode=true&characterEncoding=euckr"; String dbUser = "doublesid"; String dbPass = "doublespw"; conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass); //02단계 :DB연결(Connection)끝 System.out.println(conn + "<-- conn m_list.jsp"); if(conn != null){ out.println("01 DB연결 성공"); }else{ out.println("02 DB연결 실패"); } //03단계 :Query실행을 위한 statement 또는 prepareStatement객체생성 시작 pstmt = conn.prepareStatement("select * from tb_member"); //04단계 :Query실행 시작 rs = pstmt.executeQuery(); System.out.println(rs + "<-- rs m_list.jsp"); //System.out.println(rs.next() + "<-- rs.next() m_list.jsp"); //System.out.println(rs.next() + "<-- rs.next() m_list.jsp"); //04단계 :Query실행 끝 //05단계 :Query실행결과 사용 //System.out.println(rs.next() + "<-- rs.next() m_list.jsp"); //select문장 통해서 모든 회원 목록 가져와서 한줄씩 //(레코드(record) or 로우(row))보여준다 시작 while(rs.next()){ %> <tr> <td><%= rs.getString("m_id")%></td> <td><%= rs.getString("m_pw")%></td> <td><%= rs.getString("m_level")%></td> <td><%= rs.getString("m_name")%></td> <td><%= rs.getString("m_email")%></td> </tr> <% } //select문장 통해서 모든 회원 목록 가져와서 한줄씩 //(레코드(record) or 로우(row))보여준다 끝 } catch(SQLException ex) { out.println(ex.getMessage()); ex.printStackTrace(); } finally { // 6. 사용한 Statement 종료 if (rs != null) try { rs.close(); } catch(SQLException ex) {} if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {} // 7. 커넥션 종료 if (conn != null) try { conn.close(); } catch(SQLException ex) {} } %> </table> </body> </html> | cs |
*ResultSet
select쿼리 실행시 excuteQuery() 메서드를 사용하며, 실행결과로 java.sql.ResultSet형으로 리턴한다.
ResultSet에서 자주 사용하는 메서드들
next() - 다음행으로 커서를 이동(다음행이 없으면 false 리턴)
getXxx(int columnIndex) - columnIndex번째 컴럼 값을 Xxx타입으로 가져온다.
getXxx(String columName) - columName 컬럼의 값을 Xxx타입으로 가져온다.
close() - ResultSet 객체를 반환
ResultSet.next() 메서드 커서의 이동
수정사항
실질적인 데이터가 저장되어 있는 영역과 함께 실제 데이터가 저장되어 있지 않은 영역으로 BOF(Begin of File, before the First Row)와 EOF(End of File, After The Last Row)가 존재한다.
BOF는 첫번째 로우보다 하나더 이전의 레코드셋을 의미하고, EOF는 마지막 로우보다 하나더 다음 레코드셋을 의미하는데 커서의 맨처음은 첫번째 레코드를 가리키는 것이 아니라 BOF를 가리키고 next()하게되면 다음행의 커서로 이동하게 된다.
* resultSet 출처
http://cafe.naver.com/jjdev/781