JSP 에서 JDBC 로 Oracle DB 연동하기 과정을 진행한 것으로 가정하고 작성했다.
미리 사용자 계정을 생성해뒀고, 해당 계정으로 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. 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>
html
java
java
html
+ java
모든 데이터 조회
테이블에서 튜플(tuple)을 표현식으로 나타내기
try 문을 돌린 후, 객체들을 역순으로 해제
html 태그 --> 외관 꾸미기
java 코드 --> 데이터 주무르기
테이블 용어