GUI 설계 6 주차 DB 연동김문정 tops@yd.ac.kr 강의순서강의전환경 JDK 설치및환경설정톰캣설치및환경설정이클립스 (JEE) 설치및환경설정 MySQL( 드라이버 ) 설치및커넥터드라이브연결 DB 생성 - 계정생성이클립스에서 DB에연결서버생성 - 프로젝트생성 DB연결테이블생성및등록 2 MySQL 설치확인 mysql - u root -p MySQL 에데이터베이스추가 (basicjsp) 3 4
DB 에사용자계정추가및권한설정 데이타베이스에사용자계정으로접속 5 6 이클립스에서직접제어 이클립스에서직접제어 웹서버설정 File New Other New : Server Next New Server : Apache Tomcat v8.0 Server Next Finish 동적웹프로젝트작성동적웹프로젝트작성 File New Project New Project : Web Dynamic Web Project Next 동적웹프로젝트를서버에추가 7 8
9 10 11 12
13 14 15 16
17 18 이클립스에서직접제어커넥션연결확인 19 20
이클립스에서직접제어커넥션사용 이클립스에서직접제어커넥션사용 21 22 이클립스에서직접제어커넥션사용 이클립스에서직접제어커넥션사용 23 24
이클립스에서직접제어커넥션사용 Alt + X 25 <%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <%@ page import = "java.sql.*" %> <% Connection conn=null; try{ String url = "jdbc:mysql://localhost:3306/basicjsp"; String id = "jspid" ; String pw = "jsppass" ; Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, id, pw); out.println(" 제대로연결되었습니다 "); } catch(exception e){ e.printstacktrace(); } %> 26 과제 클라이언트로부터받은정보출력하기제출기한 : 10 월 4 일 ( 목 ) 제출 : 한글파일로작성 / 출력하여수업전교탁위에제출할것 표지 과제 1] 입력화면 -> 출력화면 과제 2] 입력화면 -> 출력화면 과제 3] 입력화면 -> 출력화면 과제 1] 입력소스 -> 출력소스 과제 2] 입력소스 -> 출력소스 과제 3] 입력소스 -> 출력소스 과제작성후소감 과제 1 클라이언트로부터받은정보출력하기 27 28
과제 2 클라이언트로부터받은정보출력하기 과제 3 클라이언트로부터받은정보출력하기 29 30 클라이언트로부터받은정보출력하기 테이블생성 (349 쪽 ) 31 32
테이블확인 테이블에레코드삽입 (356 쪽 ) 33 34 테이블에레코드확인 (357 쪽 ) JDBC(Java DataBase Connectivity) JDBC 프로그램의작성단계 (368 쪽 ) 1. 2. 3. 4. 5. Package import JDBC 드라이버 Load Connection 객체생성 Statement 객체생성 Query 수행 Resultset 객체로부터데이터추출 Resultset 객체 close Statement 객체 close Connection 객체 close 35 36
JDBC 를사용한 JSP 와 DB 의연동 JDBC 프로그램의작성단계 1. JDBC Driver 로드 Class.forName( com.mysql.jdbc.driver ); 2. Connection 객체생성 JDBC 를사용한 JSP 와 DB 의연동 JDBC 프로그램의작성단계 3. Sql 쿼리생성, 반환된결과가져올작업영역제공 Statement stmt = con.createstatement(); String url = jdbc:mysql://localhost:3306/basicjsp ; String id = jspid ; String pw = jsppass ; Connection conn = DriverManage.getConnection(url, id, pw); 4. Query 수행 5. ResultSet 처리 37 38 JDBC 프로그래밍에사용되는객체 1. DriverManager 클래스 JDBC 를사용해서 JSP 에서 DB 를사용할수있는커넥션만듦 Class.forName( com.mysql.jdbc.driver ); 2. Connection 인터페이스 데이터베이스에대한커넥션을객체로표현함 sql 쿼리문을실행하려면반드시필요한객체 Connection conn = DriverManage.getConnection(url, id, pw); JDBC 프로그래밍에사용되는객체 3. Statement 인터페이스 executequery() 메소드 / executeupdate() 메소드 4. PreparedStatement 인터페이스 각인수에대해위치홀더를사용하여 SQL 문장정의 위치홀더 :? 실행시간동안인수값공간확보 String sql = insert into member values (?,?,?,?) ; PreparedStatement pstmt = conn.preparedstatement(sql); pstmt.setstring(1, id); pstmt.setstring(2, passwd); 39 40
JDBC 프로그래밍에사용되는객체 5. CallableStatement 인터페이스 6. ResultSet 인터페이스 SQL 문에서 select 문을사용한쿼리문 : executequery() 메소드사용결과물반환 frist() 메소드 : 첫번째레코드 last() 메소드 : 마지막레코드 beforefrist() 메소드 : 첫번째레코드이전 afterlast() 메소드 : 마지막레코드다음 previous() 메소드 : 현재위치에서이전레코드 next() 메소드 : 다음레코드있으면 true 41 <%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <%@ page import="java.sql.*" %> <% request.setcharacterencoding("utf-8"); %> <html> <head><title> 표시 </title></head> <body> <h2> member 테이블의레코드 </h2> <hr width="600" align="left"> <table border="1"> <tr> <td width="100"> 아이디 </td> <td width="100"> 비밀번호 </td> <td width="100"> 이름 </td> <td width="250"> 가입일자 </td> </tr> 42 391 쪽 <% Connection conn = null ; PreparedStatement pstmt = null ; ResultSet rs = null; try{ String jdbcurl = "jdbc:mysql://localhost:3306/basicjsp"; String dbid = "jspid"; String dbpass = "jsppass"; Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(jdbcUrl, dbid, dbpass); String sql = "select * from member"; while (rs.next()) { String id = rs.getstring("id"); String passwd = rs.getstring("passwd"); String name = rs.getstring("name"); Timestamp register = rs.gettimestamp( reg_date"); %> <tr> <td width="100"> <%=id %> </td> <td width="100"> <%=passwd %> </td> <td width="100"> <%=name %></td> <td width="250"> <%=register.tostring() %> </td> </tr> <% } pstmt = conn.preparestatement(sql); rs = pstmt.executequery(); 43 44
} catch(exception e) { e.printstacktrace(); } finally { if (rs!= null) try { pstmt.close(); } catch(sqlexception e){ } if (pstmt!= null) try { pstmt.close(); } catch(sqlexception e){ } if (conn!= null) try { pstmt.close(); } catch(sqlexception e){ } } %> </table> </body> </html> 45 일정 7 주차 메인구축 7 주차 로그인작성 10 주차 - 게시판기본기능작성 12 주차 1 차발표기본기능 : 로그인 / 게시판목록 글쓰기 / 글삭제 / 글수정 / 댓글 로그아웃 회원가입 14 주차 - 최종완성완성도 / 발표준비 / 제공하는기능 /1 차완성보다개선사항 46