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