JSP 에서 JDBC 로 Oracle DB 연동 후, 데이터 조회하기

박영준·2024년 6월 13일
0

JSP

목록 보기
9/17

JSP 에서 JDBC 로 Oracle DB 연동하기 과정을 진행한 것으로 가정하고 작성했다.

1. 테이블 생성 및 데이터 삽입

미리 사용자 계정을 생성해뒀고, 해당 계정으로 Oracle DB 에 접속한다.

Oracle SQL Developer 를 이용하여 테이블을 생성하고 해당 테이블에 데이터들을 삽입한다.

쿼리문

create table MEMBER (
    NUM VARCHAR2(20) PRIMARY KEY,
    NAME VARCHAR2(20),
    AGE VARCHAR2(20),
    SEX VARCHAR2(20)
);    

insert into MEMBER (NUM, NAME, AGE, SEX)
    values ('1', '김철수', '20', '남');
    
insert into MEMBER (NUM, NAME, AGE, SEX)
    values ('2', '신영희', '24', '여');    
    
insert into MEMBER (NUM, NAME, AGE, SEX)
    values ('3', '박가나', '27', '남');
    
insert into MEMBER (NUM, NAME, AGE, SEX)
    values ('4', '임미나', '28', '여');    
    
commit;    

테이블

삽입된 데이터

주의!
테이블을 생성하고 데이터를 삽입할 때 다음 문제가 생길 수 있다.
참고: ORA-01950: 테이블스페이스 'USERS'에 대한 권한이 없습니다.

2. jsp 작성하기

'방법 2. context.xml & web.xml' 을 사용했다.

<%@page import="javax.sql.*"%>
<%@page import="javax.naming.*"%>
<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
	
	<style>
		th {
			color: blue;
		}
	</style>

</head>
<body>
	<table border="1">
      	// 테이블에서 속성(attribute)
		<tr>
			<th>번호</th>
			<th>이름</th>
			<th>나이</th>
			<th>성별</th>
		</tr>

	<%	
		Connection con = null;
		Boolean connect = false;	

		PreparedStatement pstmt = null;
		
		ResultSet rs = null;
	
		try {			
          	// 1. 컨택스트 객체 생성해서, 커넥션 풀 생성
			Context init = new InitialContext();
          
          	// 2. 쓰레드 풀 관리자 객체 생성 
			DataSource ds = (DataSource) init.lookup("java:comp/env/Oracle_park");
          
          	// 3. Source로부터 커넥션 풀(객체) 얻기
			con = ds.getConnection();
			
			connect = true;
			
          	// 4. DB 연결 확인
			if(connect = true) { %>
			<h3>DB 연결 성공</h3>
		<%	} else { %>
			<h3>DB 연결 실패</h3>
		<%  }
	
            // 5. 실행 도구를 생성
			pstmt = con.prepareStatement("SELECT * FROM MEMBER");
                    
            // 6. 쿼리를 실행한 결과를 rs변수에 얻음(패치)
			rs = pstmt.executeQuery();
			
            // 7. 모든 데이터 조회
			while(rs.next()) {
				Long num = rs.getLong("NUM");
				String name = rs.getString("NAME");
				String age = rs.getString("AGE");
				String sex = rs.getString("SEX");
		%>	
          		// 8. 테이블에서 튜플(tuple)을 표현식으로 나타내기
				<tr>
					<td><%=num%></td>
					<td><%=name%></td>
					<td><%=age%></td>
					<td><%=sex%></td>
				</tr>
		<% 	} 
		
        // 9. 예외
	    } catch(Exception ex) {
			connect = false;
			ex.printStackTrace();
			
        // 10. try 문을 돌린 후, 객체들을 역순으로 해제
		} finally {
			if(rs != null) rs.close();
			if(pstmt != null) pstmt.close();
			if(con != null) con.close();
		}
	 %>
    </table>
</body>
</html>
  • 전체적인 코드 구성은 '표'의 형태와 같이 만든다.
    • 테이블의 속성 부분 : body 태그 최상단에 위치시킴 --> html
    • 테이블의 튜플 부분
      • 구성 1. 연결, 객체를 생성하는 등... DB연동 과정이 정상적으로 이루어져야 가능 --> java
      • 구성 2. 연동된 DB에서 데이터를 조회해옴 --> java
      • 구성 3. 테이블의 튜플을 구성하면서 표현식으로 데이터를 가져옴 --> html + java
  1. 모든 데이터 조회

    • DB 에 저장된 컬럼명으로 조회(get)해온 데이터들을 각 변수(num, name, age, sex)에 담는다.
  2. 테이블에서 튜플(tuple)을 표현식으로 나타내기

    • while 문 내부에 있어야 함
  3. try 문을 돌린 후, 객체들을 역순으로 해제

    • 'null 아닌 조건'이라는 것은 각 객체가 생성되어 있는 상태였다는 것, 정상적으로 사용중이었다는 것을 의미

html 태그 --> 외관 꾸미기
java 코드 --> 데이터 주무르기

테이블 용어

profile
개발자로 거듭나기!

0개의 댓글