on
05. JSP와 JDBC 연동하기
05. JSP와 JDBC 연동하기
package com.sist.model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/*
* DAO(Data Access Object): 데이터 접근 객체 ==> DB에 접속(연동)하는 객체.
* -DAO란 데이터베이스에 접속해서 데이터 추가, 수정, 삭제, 조회, 등의 작업을 하는 클래스.
* -일반적으로 JSP 또는 Servlet에서 위의 작업들을 같이 사용할 수 있지만, 유지보수, 코드의 모듈화를
* 위해서 DAO 클래스를 따로 만들어서 사용함.
*/
public class DeptDAO {
Connection con = null ; //DB와 연동
PreparedStatement pstmt = null ; //DB에 Sql문을 전송
ResultSet rs = null ; //sql문을 실행 후 결과 값을 가지고 있는 객체
String sql = null ; //쿼리문을 저장할 객체.
public DeptDAO() { //기본 생성자
String driver = "oracle.jdbc.driver.OracleDriver" ;
String url = "jdbc:oracle:thin:@localhost:1521:xe" ;
String user = "web" ;
String password = "1234" ;
//1단계: 오라클 드라이버 로딩
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
if (con ! = null ) {
System . out . println ( "데이터베이스 연결 성공!!!" );
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} //기본 생성자 end
// selectList() 메서드 만들기
// DEPT 테이블에서 전체 리스트를 조회하여
public List < DeptDTO > selectList() {
List < DeptDTO > list = new ArrayList < DeptDTO > (); //다형성
try {
//3. 쿼리문 작성
sql = "select * from dept order by deptno" ;
//4. 쿼리문을 데이터베이스 전송 객체에 저장.
pstmt = con.prepareStatement(sql);
//5. 쿼리문을 DB에 전송 및 실행
rs = pstmt.executeQuery();
//6. 데이터를 DTO 객체에 저장
while (rs.next()) {
DeptDTO dto = new DeptDTO();
dto.setDeptno(rs.getInt( "deptno" ));
dto.setDname(rs.getString( "dname" ));
dto.setLoc(rs.getString( "loc" ));
list. add (dto); //객체 배열 같은 느낌.
}
//7. open 되어 있던 객체 모두 닫기. 연 순서의 거꾸로.
rs.close(); pstmt.close(); con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
} //selectList() 의 끝
public int insertDept(DeptDTO dto) {
int result = 0 ;
try {
//1. SQL문 작성
sql = "insert into dept values(?, ?, ?)" ;
//2. SQL문을 DB 전송 객체에 전달.
pstmt = con.prepareStatement(sql);
pstmt.setInt( 1 , dto.getDeptno());
pstmt.setString( 2 , dto.getDname());
pstmt.setString( 3 , dto.getLoc());
//3. SQL문을 DB에 전송 및 실행.
result = pstmt.executeUpdate();
//4. open 되어 있던 객체 닫기.
pstmt.close(); con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result; //성공하면 1 반환
}
public int deleteDept( int deptno) {
int result = 0 ;
try {
sql = "delete from dept where deptno = ?" ;
pstmt = con.prepareStatement(sql);
pstmt.setInt( 1 , deptno);
result = pstmt.executeUpdate();
pstmt.close(); con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
};
}
from http://purewater-practice-diary.tistory.com/48 by ccl(A) rewrite - 2021-10-19 20:27:18