Sio's Programming

데이터 베이스 Oracle (JDBC, Statement객체) 본문

Programming/DB

데이터 베이스 Oracle (JDBC, Statement객체)

SSio 2018. 5. 9. 04:21

JDBC 살펴보기



JAVA 프로그램에서 SQL문을 실행하여 데이터를 관리하기 위한 JAVA API 입니다.

JDBC의 특징은 다양한 데이터 베이스에 대해서 별도의 프로그램을 만들 필요 없이, 해당 데이터 베이스의 JDBC를 이용하면

하나의 프로그램으로 데이터베이스를 관리 할 수 있습니다.

우리는 Oracle을 사용하므로, Oracle용 JDBC를 사용하며, 이것은 오라클을 설치하면 자동으로 설치 되고,

이클립스에서 해당 클래스 파일을 복사하면 됩니다.



오라클 드라이버를 사용하기 위한 ojdbc6_g.jar 파일 복사


C:\down\OracleXE112_Win64\DISK1   // 오라클 설치경로에서  ojdbc6_g.jar 복사해서


C:\Program Files\Java\jre1.8.0_161\lib\ext  // 자바 설치 폴더 ext 폴더 안에 ojdbc6.g.jar 붙여넣기




JDBC 살펴보기


데이터 베이스 연결 순서


 JDBC 드라이버 로드

DriverManager 

Class.forName("oracle.jdbc.driver.OracleDriver"); 

데이터베이스 연결 

Connection 

DriverManager.getConnection(JDBC URL, 계정아이디, 비밀번호);

: Connection객체 생성 합니다. 

SQL문 실행 

Statement 

connection.createStatement();

:Statement객체를 통해 SQL문이 실행 됩니다. 

데이터 베이스 연결 해제 

ResultSet 

statement.executeQuery(), statement.executeUpadate()

:SQL문의 결과값을 ResultSet객체로 받습니다. 


드라이버 로드 -> 데이터베이스 연결 -> SQL문 실행 -> 데이터 베이스 연결 해제




Statement 객체 살펴보기




<interface> 

Statement

 executeQuery()

SQL문 실행 후 여러 개의 결과값 생기는 경우 사용 합니다.

예)select 

executeUpdate() 

SQL문 실행 후 테이블의 내용만 변경되는 경우 사용 합니다.

예)insert, delete, update 


executeUpdate()는 반환형이 int이다


excuteQuery() 실행 후 반환 되는 레코드 셋


executeQuery() 

ResultSet 

BOF 

 next():다음 레코드로 이동

 previous() :이전 레코드로 이동

 first() : 처음으로 이동

 last() : 마지막으로 이동

 get메소드 (getString, getInt)

 첫번째 로우 데이터

 두번째 로우 데이터

 세번째 로우 데이터

 N번째 로우 데이터

 EOF


BOF 부터 접근할수 있음  BOF ~ EOF 




예제 :


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    
<%!
    Connection connection;
    Statement statement;
    ResultSet resultSet;
    
    String driver = "oracle.jdbc.driver.OracleDriver";
    String url = "jdbc:oracle:thin:@localhost:1521:xe";
    String uid = "scott";
    String upw = "tiger";
    String query = "select * from member";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
    
    <%
    
    try{
        Class.forName(driver);
        connection = DriverManager.getConnection(url, uid, upw);
        statement = connection.createStatement();
        resultSet = statement.executeQuery(query);
        
        while(resultSet.next()){
            String id = resultSet.getString("id");
            String pw = resultSet.getString("pw");
            String name = resultSet.getString("name");
            String phone = resultSet.getString("phone");
            
            out.println("아이디 :" + id + ",패스워드 :" + pw + ",이름 :" + name + ",전화번호 : " + phone + "<br />");
            
        }
    }catch(Exception e){
        e.printStackTrace();
    }finally{
        try{
            if(resultSet != null) resultSet.close();
            if(statement != null) statement.close();
            if(connection != null) connection.close();
        }catch(Exception e2){
            e2.printStackTrace();
        }
    }
    %>
    
</body>
</html>
cs