웹/JSP

JSP DB 연동하기(오라클, DBeaver, JDBC)

푸코잇 2023. 6. 4. 14:50

이번시간에는 JSP에서 DB 연동을 해보겠습니다.

여기서는 오라클, DBeaver, JDBC를 사용하겠습니다.

 

오라클 다운로드

저는 오라클 11g 버전을 다운로드 했습니다.

https://www.oracle.com/database/technologies/xe-prior-release-downloads.html

 

개인 PC OS에 맞게 다운로드 해주세요.

저는  Windowsx64로 다운했습니다.

 

다운로드 받은 압축파일을 풀어주고 DISK1 폴더에 setup.exe를 실행해주세요.

 

 

Next를 누르다보면 관리자(SYS, SYSTEM) 비밀번호를 설정할 수 있습니다.

 

 

오라클 설치 완료 후 cmd 창을 연다.

"sqlplus sys as sysdba"를 입력 후 오라클 설치 시 설정한 비밀번호를 입력 후 엔터를 누른다.

다음과 같이 오라클 버전이 나오고 "SQL>"이 뜨면 정상적으로 설치가 된 것이다.

 

 

오라클에서 기본적으로 제공해주는 학습용 계정(hr)을 풀어주자.

학습용 계정(hr)은 디폴트로 락이 되어있으므로 언락해주자.

이제 자신이 편한 비밀번호로 설정해주면 된다.

 

 

conn 명령어를 통해 hr 계정을 로그인해보자.

show user 명령어 수행 시 USER is "HR"이 뜨면 정상이다.

 

DBeaver 다운로드

cmd 창에서 오라클 DB를 관리하기는 무척 귀찮다.

DB 관리 툴인 DBeaver를 통해 오라클을 관리하자.

https://dbeaver.io/files/5.3.5/

여기서는 안정화된 DBeaver 5.3.5 버전을 다운로드했다.

다운로드 한 압축파일을 풀어주면 해당 경로에 있는 dbeaver.exe를 실행해보자.

Oracle을 선택한 뒤 Next를 누른다.

Host, Database, User name, Password를 입력한 뒤 "Edit Driver Settings"를 누른다.

DBeaver에서 오라클을 연동하기위해 JDBC를 추가해줘야 한다.

Add File를 눌러 해당 경로에 위치한 ojdbc6을 추가한 뒤 OK 누른다.

Test Connection 버튼을 클릭하여 다음과 같이 Success 창이 뜨면 성공이다.

테스트를 위한 TBL_MEMBER 테이블을 생성해주자.

테스트용 데이터도 하나 넣어줬다.

 

JSP에서 DB연동 테스트

프로젝트 Build Path => Configure Build Path를 클릭한다.

"Add External JARs..."를 클릭하여 ojdbc6을 추가한다.

WAS에서 접근하기 위해 lib 폴더에도 ojdbc6.jar 파일을 복사해서 넣어주자.

위의 그림과 같이 ojdbc가 존재해야 한다.

 

이제 DB 연동하기 위한 작업을 해보자.

  • DBconnecter.java
package com.jspex.beans;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBconnecter {
	public static Connection getConnection() {
		Connection conn = null;
		
		try {
			String url = "jdbc:oracle:thin:@localhost:1521:XE";
			String user = "hr";
			String pw = "hr";
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection(url, user, pw);
		} catch (ClassNotFoundException e) {
			System.out.println("드라이버 로딩 실패");
		} catch (SQLException e) {
			System.out.println("DB 접속 실패"); 
		} catch (Exception e) {
			System.out.println("알 수 없는 오류 " + e);
		}
		return conn;
	}
}

재사용성을 높이기위한 DB 연결 클래스이다.

 

  • MemberVO.java
package com.jspex.beans;

//NUM NUMBER PRIMARY KEY,
//NAME VARCHAR2(1000),
//BIRTHDAY DATE
public class MemberVO {
	private int num;
	private String name;
	private String birthday;
	
	public MemberVO() {
		this.name = "이름이 없습니다.";
		this.birthday = "생일이 등록되지 않았습니다.";
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getBirthday() {
		return birthday;
	}

	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}
}

오라클 DB에 테스트를 위해 생성한 TBL_MEMBER 테이블 값을 가지는 클래스이다.

 

  • MemberDAO.java
package com.jspex.beans;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;

public class MemberDAO {
	Connection conn;
	PreparedStatement pstm;
	ResultSet rs;
	
	public ArrayList<MemberVO> select(String name) {
		String query = "SELECT * FROM TBL_MEMBER WHERE NAME = ?";
		ArrayList<MemberVO> members = new ArrayList<>();
		MemberVO member = null;
		SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
		try {
			conn = DBconnecter.getConnection();
			pstm = conn.prepareStatement(query);
			pstm.setString(1, name);
			rs = pstm.executeQuery();
			
			while(rs.next()) {
				member = new MemberVO();
				member.setNum(rs.getInt(1));
				member.setName(rs.getString(2));
				member.setBirthday(sdf.format(rs.getDate(3)));
				members.add(member);
			}
			
		} catch (SQLException e) {
			System.out.println("selece(String) 쿼리 오류 " + e);
		} catch (Exception e) {
			System.out.println("select(String) 알 수 없는 오류 " + e); 
		} finally {
			try {
				if(rs != null) {
					rs.close();
				}
				if(pstm != null) {
					pstm.close();
				}
				if(conn != null) {
					conn.close();
				}
			} catch (SQLException e) {
				throw new RuntimeException(e.getMessage());
			}
		}
		return members;
	}
}

DB의 데이터에 접근하기 위한 클래스이다.

 

  • dbconn_test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="com.jspex.beans.*"%>
<%@page import="java.util.ArrayList"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>DB연동 테스트</title>
</head>
<body>
	<%
		MemberVO member = new MemberVO();
		MemberDAO dao = new MemberDAO();
		ArrayList<MemberVO> members = dao.select("테스트");
	%>
	<table border = 1>
		<%for(int i =0; i < members.size(); i++) {%>
		<tr>
			<td><%=members.get(i).getName()%></td>
			<td><%=members.get(i).getBirthday()%></td>
		</tr>
		<%
		}
		%>
	</table>
</body>
</html>

 

  • 실행결과


출처

따즈아 - 배워서 바로 써먹는 JSP 1

' > JSP' 카테고리의 다른 글

JSP 내장 객체  (0) 2023.06.06
JSP 자바빈즈(Java Beans)  (0) 2023.06.05
JSP 액션(Action) 태그 (forward, param, include)  (0) 2023.04.16
JSP 에러(The selection cannot be run on any server)  (0) 2023.04.13
JSP 스크립트(Script) 태그  (0) 2023.04.05