ORACLE SQL

ORACLE SQL JAVA 적용 시키기

최종군 2024. 7. 30. 19:31

 

 

JDBC용 객체 

 

Connection : DB의 연결 정보를 담고있는 객체

[Prepared] Statement : 연결된 DB에 sql문을 전달하여 실행하고 

그 결과를 받아주는 객체 

 

ResultSet : DQL(SELECT)문 실행 후 조회 결과를 담고있는 객체

 

*JDBC 과정 (*순서 중요*) 

1) JDBC용 DRIVER 등록 : 해당 DBMS(오라클)가 제공하는 클래스 등록 

2) Connection 생성 : 연결하고자 하는 DB정보를 입력해서 해당 DB와 연결하면서 생성 

DB정보 : 접속 주소(ur1) , 사용자 이름(username), 사용자 비밀번호(password)

 

3) Statement 생성 : Connection 객체를 이용하여 생성

sql문을 실행하고 결과를 이용하여 생성 

 

4) sql문을 DB에 전달하여 실행(State 객체 사용)

 

5) 실행 결과를 받기 

 - SELECT문 실행 : ResultSet 객체(조회된 데이터들이 담겨져 있음)

-  DML문 실행 : int (처리된 행 수) 

 

6) 결과 처리 

- ResultSet에 담겨져있는 데이터들을 하나하나 꺼내서 vo 객체에 옮겨 담기 

- 트랜잭션 처리 (실행을 성공했으면 COMMIT, 실패했으면 rollback)

 

7) 사용 후 JDBC용 객체들을 반납 (close) --> 생성 역순으로!

 

Connection conn = null;    ( 1번 )

Statement stmt = null;
ResultSet rset = null; 

 

try{

 

1)  jdbc driver 등록

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

 

2) Connection 객체 생성

conn = DriverManager.getConnection(1.접속주소, 2.사용자이름, 3.사용자비밀번호)

 

3) Statement 객체 생성 

stmt = conn.createStatement();

 

4)5) sql문 실행 후 결과 받기

 

String sql  = "SELECT * FROM TEST";

rset = stmt.executeQuery(sql)

 

6) sql문 실행 결과를 하나하나 추출하기 

rset.next();  -- boolean (데이터가 있으면 true, 없으면 false)

 

while( rset.next() ){

int tno = rset.getInt("TNO"); // 컬럼명으로 추출 

String tname = rset.getString(2); // 컬럼 순번으로 추출(조회했을 때 두번째 컬럼이 Tname)

Date tdate = rset.getDate("TDATE"); // sql Date 객체 

}

}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}finally {
try {
rset.close();
stmt.close();
conn.close();  -- 역순으로 close();
}catch (SQLException e) {
e.printStackTrace();
}
}

}

 

 

private final String URL = "jdbc:oracle:thin:@localhost:1521:xe";
private final String USER_NAME = "C##JDBC";
private final String PASSWORD = "JDBC";

 

 

 



Connection conn = null;
java.sql.Statement stmt = null;

try {
1) jdbc driver 등록 
Class.forName("oracle.jdbc.driver.OracleDriver");


 2) Connection 객체 생성 => DB 연결 
conn = DriverManager.getConnection(URL,USER_NAME,PASSWORD);
conn.setAutoCommit(false);

 

setAutoCommit(false);

--> 기본적으로 JDBC연결은 자동 커밋 모드로 설정이 되어있다

즉 각 SQL문이 실행된 후 자동으로 커밋이된다 

setAutoCommit(false) .. false로 설정하므로 

자동관리에서 수동관리로 변경이 가능하다 

 



 3) Statement 객체 생성 
stmt = conn.createStatement();

 


 4) 실행 후 결과 받기 
result = stmt.executeUpdate(sql);

 


 5) 트랜잭션 처리 

실행에 성공을 했으면 commit 

실행에 실패했을 시 rollback


if(result > 0) {
conn.commit();
}else {
conn.rollback();
}

 


}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}


return result;
}

 

 


 

public ArrayList<Member> selectList() {
// SELECT문(여러 행 조회) --> ResultSet 객체 --> ArrayList<Member>에 담기 
ArrayList<Member>list = new ArrayList<Member>(); // 리스트가 비어있는 상태


Connection conn = null;
java.sql.Statement stmt = null;
ResultSet rset = null; 


try {
// 1) jdbc driver 등록 
Class.forName("oracle.jdbc.driver.OracleDriver");

// 2) Connection 객체 생성
conn = DriverManager.getConnection(URL,USER_NAME,PASSWORD);

// 3) Statement 객체 생성 
stmt = conn.createStatement();


// 4)5) sql문 실행 후 결과 받기 

// 실행할 sql문 
String sql = "SELECT * FROM MEMBER";

rset = stmt.executeQuery(sql);

// 조회는 트랜잭션 처리가 필요없다. 


// 6) sql문 실행 결과를 하나하나 추출하기 
// * 데이터 있는 지 여부 확인 => rset.next(); boolean (데이터가 있으면 true, 없으면 false)

while(rset.next()) {
// * 데이터를 가지고 올 때, '컬럼명' 또는 '컬럼순번'을 사용하여 추출 
Member m = new Member(
rset.getInt("USERNO"),
rset.getString("USERID"),
rset.getString("USERPW"),
rset.getString("USERNAME"),
rset.getString("GENDER") == null ? ' ' : rset.getString("GENDER").charAt(0),
rset.getInt("AGE"),
rset.getString("EMAIL"),
rset.getString("ADDRESS"),
rset.getString("PHONE"),
rset.getString("HOBBY"),
rset.getDate("ENROLLDATE")
); 

list.add(m);
// 컬럼명으로 추출 
}

// 반복문이 끝나는 
// 조회된 데이터가 없다면 ? 리스트는 비어 있을 것임 
// 조회된 데이턱 

}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}finally {
try {
rset.close();
stmt.close();
conn.close();    // 자원 해제는 역순으로 처리한다
}catch (SQLException e) {
e.printStackTrace();
}
}
  return list;
}

'ORACLE SQL' 카테고리의 다른 글

SQL JDBC 회원 관리 프로그램 _ INSERT  (0) 2024.07.31
ORACLE SQL DCL/TCL , view  (0) 2024.07.31
ORACLE SQL DDL 복습 내용 정리  (0) 2024.07.30
ORACLE SQL_DML  (0) 2024.07.29
ORACLE SQL SEQUENCE  (0) 2024.07.29