2019. 3. 13. 14:16ㆍJdbc
예제 환경
> DBMS : MySQL
> DB Server IP/Port : localhost:3306
> Database Name : jdbcTest
> Database ID : testid
> Database password : testpw
* eclipse 에서 프로젝트에 JDBC MySQL Connector Libarary가 추가되어 있어야 한다.
* MySQL 다운로드 페이지
* MySQL 드라이버 다운로드 페이지
1. JDBC를 사용한 JSP와 데이터베이스 연동 확인
- JDBC를 사용하여 데이터베이스에 연동을 위해서는 해당 DBMS의 드라이버를 등록한 후, getConnection()을 사용해 연결하면 된다.
- 연결에 문제가 발생하면 Exception이 발생한다.
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR" %>
<%@ page import = "java.sql.*" %> <!-- JSP에서 JDBC의 객체를 사용하기 위해 java.sql 패키지를 import 한다 -->
<%
Connection conn = null; // null로 초기화 한다.
try{
String url = "jdbc:mysql://localhost:3306/jdbcTest"; // 사용하려는 데이터베이스명을 포함한 URL 기술
String id = "testid"; // 사용자 계정
String pw = "testpw"; // 사용자 계정의 패스워드
Class.forName("com.mysql.jdbc.Driver"); // 데이터베이스와 연동하기 위해 DriverManager에 등록한다.
conn=DriverManager.getConnection(url,id,pw); // DriverManager 객체로부터 Connection 객체를 얻어온다.
out.println("제대로 연결되었습니다."); // 커넥션이 제대로 연결되면 수행된다.
}catch(Exception e){ // 예외가 발생하면 예외 상황을 처리한다.
e.printStackTrace();
}
%>
2. JDBC를 사용한 테이블에 레코드 추가, 수정, 삭제 (insert, update, delete)
- JDBC를 사용하여 테이블에 쿼리를 실행하기 위해서 PreparedStatement 객체를 사용한다.
- insert, update, delete는 executeUpdate() 를 호출하여 쿼리를 실행한다.
- 쿼리가 실행 성공 실패 여부와 상관없이 finally 를 통해서 PreparedStatement 객체와, Connection 객체의 자원을 해제해줘야 한다.
- 여기서 해제 순서가 중요하다.
<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR" %>
<%@ page import = "java.sql.*" %> <!-- JSP에서 JDBC의 객체를 사용하기 위해 java.sql 패키지를 import 한다 -->
<%
Connection conn = null; // null로 초기화 한다.
PreparedStatement pstmt = null;
try{
String url = "jdbc:mysql://localhost:3306/jdbcTest"; // 사용하려는 데이터베이스명을 포함한 URL 기술
String id = "testid"; // 사용자 계정
String pw = "testpw"; // 사용자 계정의 패스워드
Class.forName("com.mysql.jdbc.Driver"); // 데이터베이스와 연동하기 위해 DriverManager에 등록한다.
conn=DriverManager.getConnection(url,id,pw); // DriverManager 객체로부터 Connection 객체를 얻어온다.
String sql = "insert into member1 values(?,?,?,?)"; // sql 쿼리
pstmt = conn.prepareStatement(sql); // prepareStatement에서 해당 sql을 미리 컴파일한다.
pstmt.setString(1,"test");
pstmt.setString(2,"passwd");
pstmt.setString(3,"김철수");
pstmt.setTimestamp(4, new Timestamp(System.currentTimeMillis())); // 현재 날짜와 시간
pstmt.executeUpdate(); // 쿼리를 실행한다.
out.println("member 테이블에 새로운 레코드를 추가했습니다."); // 성공시 메시지 출력
}catch(Exception e){ // 예외가 발생하면 예외 상황을 처리한다.
e.printStackTrace();
out.println("member 테이블에 새로운 레코드 추가에 실패했습니다.");
}finally{ // 쿼리가 성공 또는 실패에 상관없이 사용한 자원을 해제 한다. (순서중요)
if(pstmt != null) try{pstmt.close();}catch(SQLException sqle){} // PreparedStatement 객체 해제
if(conn != null) try{conn.close();}catch(SQLException sqle){} // Connection 해제
}
------------------------------------------------------
연결하기
쿼리객체 작성
쿼리문 실행
결과받기
지원해제