servlet jsp

DB와 연결하여 자료 입력, 수정, 삭제 조회하기(기본 패턴)

머리방울 2022. 7. 31. 20:34

오라클 화면을 위와 같이 세팅한다.

context에 내가 사용하는 오라DB의 아이디와 비밀번호가 들어가기 때문에

정확하게 작성하지 않으면 오류가 나니 정확하게 적을 것!

 

1. 기본패턴 (insert, update, delete 사용할 때)

<예시 학생의 학번, 이름, 나이, 주소를 insert하고자 할 때>

input 태그와 form태그로 아래 데이터를 받았다.

int stuNum= Integer.parseInt(request.getParameter("stuNum"));
String stuName = request.getParameter("stuName");
int stuAge= Integer.parseInt(request.getParameter("stuAge"));
String stuAddr = request.getParameter("stuAddr");

<------------DB작업 시작-------------------->
1. 자바와 DB 연결할 객체(필수) 접속정보  선언만
Connection conn = null; 

2. 쿼리를 실행할 객체(필수) 선언만
PreparedStatement stmt = null;

 

3. 쿼리문 저장할 변수(필수) 선언

String sql = " ";

 

4.쿼리문 작성

sql = "INSERT INTO TEST_STUDENT 

 (STU_NUM

, STU_NAME

, STU_AGE

, STU_ADDR)"
+ " VALUES (?

, ?

, ?

, ?)";

5. try cathch finally문 작성

(try 오류발생할 수도 있는 내역 catch try 내 오류발생 시 실행내역(오류없이는 실행x)

finally 오류 유무 관계없이 무조건 실행할 내역)

 

try {
1) DB 연결 정보 받아옴
Context init= new InitialContext();  

2) 접속정보 ( 오라클로 연결할거야!)
DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/OracleDB"); 

3) DB와 자바를 연결
conn = ds.getConnection();

4)쿼리 실행 준비( 변수로 sql 쿼리정보 받았다)
stmt = conn.prepareStatement(sql);

5) Values의 ? 값을 세팅 (물음표의 순서대로 정보 넣어주어야 한다)  
stmt.setInt(1, stuNum);
stmt.setString(2, stuName);
stmt.setInt(3, stuAge);
stmt.setString(4, stuAddr);

6) 삽입, 삭제, 수정할 때 사용하는 쿼리 실행

(리턴값 int로 받음 why? 1행 삭제, 수정, 추가 변화를 정수로 받기 때문에)
stmt.executeUpdate();


}catch(Exception e){

e.printStackTrace();  (오류 난 위치 간략한 이유 console에 표시해 줌)

}finally {
(DB연결 해제하겠다 연결 순서의 역순으로 해제시켜줘야 한다.)

try {
if(rs != null) {

rs.close();
}

if(stmt != null) {
stmt.close();

}

if(conn != null) {

conn.close();
}
}catch(Exception e) {
e.printStackTrace();
}

}

 

2. 기본패턴 (Select문 사용 시)

1. 자바와 DB 연결할 객체(필수) 접속정보  선언만
Connection conn = null; 

2. 쿼리를 실행할 객체(필수) 선언만
PreparedStatement stmt = null;

 

3. SELECT 조회 결과 데이터 저장할 객체 생성

ResultSet rs = null;  

(executeQuery 리턴값이 resultSet 그래서 rs로 함)

 

4. 쿼리문 저장할 변수(필수) 선언

String sql = " ";

 

5.쿼리문 작성

sql = "SELECT

  STU_NUM

, STU_NAME

 FROM TEST_STUDENT

 WHERE STU_NUM = ?";

6. try cathch finally문 작성

(try 오류발생할 수도 있는 내역 catch try 내 오류발생 시 실행내역(오류없이는 실행x)

finally 오류 유무 관계없이 무조건 실행할 내역)

 

try {
1) DB 연결 정보 받아옴
Context init= new InitialContext();  

2) 접속정보 ( 오라클로 연결할거야!)
DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/OracleDB"); 

3) DB와 자바를 연결
conn = ds.getConnection();

4)쿼리 실행 준비( 변수로 sql 쿼리정보 받았다)
stmt = conn.prepareStatement(sql);

5) Values의 ? 값을 세팅 (물음표의 순서대로 정보 넣어주어야 한다)  
stmt.setInt(1, stuNum);

6) 조회할 때 사용하는 쿼리 실행

rs = stmt.executeQuery();
(select로 조회한 데이터는 rs가 가지고 있다)

 

}catch(Exception e){

e.printStackTrace();  (오류 난 위치 간략한 이유 console에 표시해 줌)

}finally {
(DB연결 해제하겠다 연결 순서의 역순으로 해제시켜줘야 한다.)

try {
if(rs != null) {

rs.close();
}

if(stmt != null) {
stmt.close();

}

if(conn != null) {

conn.close();
}
}catch(Exception e) {
e.printStackTrace();
}

}