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 = ?";