140 likes | 624 Views
웹 개발자를 위한 서블릿 /JSP 제 8 장. 숭실대학교 최종명 http://it.ssu.ac.kr/jsp/. MySQL 사용법. MySQL Win32 버전 Shareware http://www.tryc.on.ca/mysql/Win32/ MySQL 실행 시작 <MySQL>binmysqld-shareware --standalone 중지 <MySQL>binmysqladmin -u root shutdown 기본적인 사용법 http://it.ssu.ac.kr/jsp/ => 튜토리얼.
E N D
웹 개발자를 위한 서블릿/JSP 제 8장 숭실대학교 최종명 http://it.ssu.ac.kr/jsp/
MySQL 사용법 • MySQL Win32 버전 • Shareware • http://www.tryc.on.ca/mysql/Win32/ • MySQL 실행 • 시작 • <MySQL>\bin\mysqld-shareware --standalone • 중지 • <MySQL>\bin\mysqladmin -u root shutdown • 기본적인 사용법 • http://it.ssu.ac.kr/jsp/ => 튜토리얼
JDBC 프로그래밍 준비 • JDBC 프로그래밍 준비 • DBMS에 데이터베이스와 테이블 생성 • JDBC 드라이버 설치 • 드라이버 다운로드 & 압축 풀기 • MySQL : mm 드라이버 • org 디렉토리를 <jakarta-tomcat>\webapps \ROOT\WEB-INF\classes 디렉토리에 복사 • MS-SQL : JTurbo/Sprinta 드라이버 • com 디렉토리를 <jakarta-tomcat>\webapps \ROOT\WEB-INF\classes 디렉토리에 복사 • 참고 : 각 디렉토리를 <jdk>/classes 에 복사
JDBC 프로그래밍 절차 • 드라이버를 로드한다. • JDBC 드라이버에 따라 다르다. 예: ODBC 브리지를 로드하는 경우 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 예: MS-SQL: JTurbo 드라이버를 로드하는 경우 Class.forName("com.ashna.jturbo.driver.Driver"); 예: MS-SQL: JTurbo 드라이버를 로드하는 경우 Class.forName("com.inet.tds.TdsDriver"); 예: MySQL: MM 드라이버를 로드하는 경우 Class.forName("org.gjt.mm.mysql.Driver").newInstance();
JDBC 프로그래밍 절차(계속) • 컨넥션을 생성한다. • JDBC 드라이버에 따라 다르다. 예: ODBC를 사용하는 경우 String url = "jdbc:odbc:Fred"; Connection con = DriverManager.getConnection(url, "Fer", "J8"); 예: JTurbo 드라이버를 사용하는 경우 String url = "jdbc:JTurbo://localhost:1433/testdb"; Connection con = java.sql.DriverManager.getConnection(url, "sa", ""); 예: Sprinta 드라이버를 사용하는 경우 String url = "jdbc:inetdae7:localhost:1433?database=gbook&charset= KSC5601"; Connection con = DriverManager.getConnection(url, “sa”, “”); 예: MM 드라이버를 사용하는 경우 String url = "jdbc:mysql://localhost/gbook"; Connection con = DriverManager.getConnection(url, “user”, “passwd”);
JDBC 프로그래밍 절차(계속) • Statement를 생성한다. • SQL을 전송한다. Statement stmt = con.createStatement(); 예: SELECT를 제외한 모든 SQL 문장 int count = stmt.executeUpdate("INSERT INTO COFFEES " + "VALUES ('Colombian', 101, 7.99, 0, 0)"); 예: SELECT 문장 ResultSet rs = stmt.executeQuery( "SELECT COF_NAME, PRICE FROM COFFEES");
JDBC 프로그래밍 절차(계속) • SELECT 문의 결과를 추출한다. • 작업을 종료한다. while (rs.next()) { String s = rs.getString(1); float n = rs.getFloat(2); System.out.println(s + " " + n); } rs.close(); stmt.close(); con.close();
JDBC 프로그래밍 예 • 예제: GWriter.java 2 import java.sql.*; …… 14 Class.forName("com.ashna.jturbo.driver.Driver"); 15 } catch (Exception e) { 16 if(debug) 17 e.printStackTrace(); …… 35 contents = contents.replace('\'', '\b'); …… 37 String url = "jdbc:JTurbo://localhost:1433/gbook"; ……
JDBC 프로그래밍 예 • 예제: GWriter.java(계속) 42 Connection con = DriverManager.getConnection(url, user, passwd); 43 Statement st = con.createStatement(); 44 String sql = "insert into book values('"+name+"','"+email+"','"+ 45 home+"','"+contents+"')"; 46 if(debug) 47 out.println(sql); 48 49 st.executeUpdate(sql);
JDBC 프로그래밍 예 • 예제: GReader.java 15 Class.forName("com.ashna.jturbo.driver.Driver"); 16 } catch (Exception e) { 17 if(debug) 18 e.printStackTrace(); …… 31 String url = "jdbc:JTurbo://localhost:1433/gbook"; 32 String user = "sa"; 33 String passwd = ""; 34 35 try { 36 Connection con = DriverManager.getConnection(url, user, passwd); 37 Statement st = con.createStatement();
JDBC 프로그래밍 예 • GReader.java(계속) 38 st.setFetchSize(max); 39 st.setMaxRows(max); 40 String sql = null; 41 if(start != null) 42 sql = "select * from book where num < " + start + 43 " order by num desc " ; 44 else 45 sql = "select * from book order by num desc "; …… 55 ResultSet rs = st.executeQuery(sql); 56 out.println("<table width=100%>");
JDBC 프로그래밍 예 • GReader.java(계속) 57 int last = -1; 58 while(rs.next()) { 59 last = rs.getInt(1); 60 String name = rs.getString(2); 61 String email = rs.getString(3); 62 String home = rs.getString(4); 63 String contents = rs.getString(5); 64 contents = contents.replace('\b', '\''); …… 99 out.println("<a href=/servlet/GReader?start=" 100 +last+">다음 페이지>>");
JDBC 프로그래밍 • Connection Pool 사용 • 데이터베이스 컨넥션은 많은 로드가 걸리는 작업 • 컨넥션을 새로 만들지 않고, 만들어진 것을 Pool에 저장해서 재사용 • ConnectionPool.java • 컨넥션을 재 사용하기 위한 클래스
JDBC 프로그래밍 예 • 예제: GReaderTwo.java 9 private ConnectionPool pool; …… 15 try { 16 pool = new ConnectionPool("jdbc:JTurbo://localhost:1433/gbook", 17 "sa", "", "com.ashna.jturbo.driver.Driver", 2, 2); …… 37 con = pool.getConnection(); 38 Statement st = con.createStatement(); …… 110 if(con != null) 111 pool.returnConnection(con);