[자바 프로그램에서 데이터베이스를 사용하는 방법]
JDBC(Java Database Connectivity) 이용
자바 프로그램에서 데이터베이스에 일관된 방식으로 접근할 수 있도록 API를 제공하는 클래스의 집합
JDBC 클래스는 java.sql 클래스에 포함되어 있어 패키지 임포트 필요.
<%@ page import="java.sql.*" %>
JDBC 관련 인터페이스
인터페이스명 | 설명 |
Connection | 데이터베이스 연결과 관련된 인터페이스. DriverManager.getConnection()으로 얻음. |
Statement | 질의, 갱신과 관련된 인터페이스. connection.createStatement()로 얻음. |
ResultSet | 결과물을 가져오는 인터페이스. statement.executeQuery()로 얻음. |
데이터베이스와 연결하기
1단계: 사용할 JDBC 드라이버를 프로그램 시작할 때 로딩 (DB업체 제공)
2단계: DriverManager 클래스를 이용하여 데이터베이스에 접속
JDBC 드라이버 연결
JDBC 드라이버를 아래의 사이트에서 가져온다.
https://www.oracle.com/database/technologies/appdev/jdbc-ucp-183-downloads.html
ojdbc8.jar를 이클립스 Web dynamic 프로젝트 폴더의 WebContent\WEB-INF\lib에 복사한다.
Class 클래스로 JDBC 드라이버 로드
Class.forName(oracle.jdbc.driver.OracleDriver);
파라미터에 지정된 Driver 클래스의 정보(클래스 필드, 메소드, 클래스의 종류)를 클래스 로더를 통해 JVM에 로드하고, DriverManager에 JDBC 드라이버가 등록된다.
DriverManager는 이 정보를 가지고 데이터베이스에 접속한다.
데이터베이스에 연결 작업 수행
Connection conn = DriverManager.getConnection(url, uid, pwd);
conn – 데이터베이스와 연결되어 작업을 수행할 수 있는 통로 역할
url = "jdbc : oracle : thin : [hostname][:port] : dbname"
SQL문 수행을 위해 Statement 객체 생성
Connection 객체(conn)로 접근해서 createStatement() 메소드를 호출하여 생성함.
Statement stmt = conn.createStatement();
Query문의 수행
메소드 | 설명 |
executeQuery | select문과 같이 결과값이 여러 개의 레코드로 얻어지는 경우 사용. |
executeUpdate | insert, update, delete 문과 같이 테이블의 내용이 변경되고 결과 값이 없는 경우에 사용. |
<ResultSet의 내용>
ResultSet rs = stmt.executeQuery(sql);
조회 결과 ResultSet 내용 읽기
메소드 | 설명 |
next() | 현재 행에서 한 행 앞으로 이동 |
previous() | 현재 행에서 한 행 뒤로 이동 |
first() | 첫 번째 행의 위치로 이동 |
last() | 마지막 행의 위치로 이동 |
ResultSet에서 얻은 각 행(레코드)에서 원하는 컬럼 읽기
메소드 | 설명 |
getString(필드명) | 문자열(varchar2, char) 타입의 데이터를 읽는다. |
getInt(필드명) | 수치(number) 타입의 데이터를 읽는다. |
<console로 읽어오기>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.DriverManager"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.Statement"%>
<%@ page import="java.sql.ResultSet"%>
<%!// 변수 선언
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String uid = "ora_user";
String pwd = "ora123";
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String sql = "select * from member";%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JDBC를 이용한 데이터베이스 데이터 읽기</title>
</head>
<body>
<%
try {
// 데이터베이스를 접속하기 위한 드라이버 SW 로드
Class.forName("oracle.jdbc.driver.OracleDriver");
// 데이터베이스에 연결하는 작업 수행
conn = DriverManager.getConnection(url, uid, pwd);
// 쿼리를 생성gkf 객체 생성
stmt = conn.createStatement();
// 쿼리 생성
rs = stmt.executeQuery(sql);
// 쿼리 수행 결과의 데이터를 읽어온다.
while (rs.next()) {
System.out.println(rs.getString("name"));
System.out.println(rs.getString("userid"));
System.out.println(rs.getString("pwd"));
System.out.println(rs.getString("email"));
System.out.println(rs.getString("phone"));
System.out.println(rs.getInt("admin"));
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
%>
</body>
</html>
<테이블로 읽어오기>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.DriverManager"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.Statement"%>
<%@ page import="java.sql.ResultSet"%>
<%!// 변수 선언
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
String uid = "ora_user";
String pwd = "ora123";
String url = "jdbc:oracle:thin:@localhost:1521:XE";
String sql = "select * from member";%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JDBC를 이용한 데이터베이스 테이블 만들기</title>
</head>
<body>
<%
try {
// 데이터베이스를 접속하기 위한 드라이버 SW 로드
Class.forName("oracle.jdbc.driver.OracleDriver");
// 데이터베이스에 연결하는 작업 수행
conn = DriverManager.getConnection(url, uid, pwd);
// 쿼리를 생성gkf 객체 생성
stmt = conn.createStatement();
// 쿼리 생성
rs = stmt.executeQuery(sql);
%>
<table border="1">
<tr>
<td>이름</td>
<td>아이디</td>
<td>암호</td>
<td>이메일</td>
<td>전화번호</td>
<td>권한(1 : 관리자, 0 : 일반회원)</td>
</tr>
<%
while (rs.next()) {
%>
<tr>
<td><%=rs.getString("name")%></td>
<td><%=rs.getString("userid")%></td>
<td><%=rs.getString("pwd")%></td>
<td><%=rs.getString("email")%></td>
<td><%=rs.getString("phone") %></td>
<td><%=rs.getInt("admin") %></td>
</tr>
<%
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
%>
</table>
</body>
</html>
'JSP, Servlet > JSP, Oracle 기초' 카테고리의 다른 글
[JSP] DBCP 소개 (0) | 2020.08.18 |
---|---|
[JSP] 상품정보 입력 후 출력(fmt태그 사용) (0) | 2020.08.18 |
[JSP] 사원정보 입력 후 테이블 형태로 출력 (0) | 2020.08.18 |
[JSP] 오라클 DB에 데이터 저장하기 실습 (0) | 2020.08.14 |
[JSP] 오라클 DB에 데이터 저장하기 (0) | 2020.08.14 |