[JAVA] JDBC 프로그래밍

MINJEE·2024년 1월 14일

SMHRD_8_Java

목록 보기
10/10
post-thumbnail

JDBC(Java DataBase Connectivity)

: 관계형 DB에 저장된 데이터를 접근/조작할 수 있게 하는 API

🔷 사용자 계정 생성하기



🔷 연동 확인 코드

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
 
public class DBConnection {
//    public static Connection dbConn;
    
    public static Connection getConnection(){
        Connection conn = null;
        try {
            String user = "c##smart01"; //사용자 계정 
            String pw = "oracle01"; //비밀번호
            String url = "jdbc:oracle:thin:@localhost:1521:xe";
            
            Class.forName("oracle.jdbc.driver.OracleDriver");        
            conn = DriverManager.getConnection(url, user, pw);
            
            System.out.println("Database에 연결되었습니다.\n");
            
            } catch (ClassNotFoundException cnfe) {
                System.out.println("DB 드라이버 로딩 실패 :"+cnfe.toString());
            } catch (SQLException sqle) {
                System.out.println("DB 접속실패 : "+sqle.toString());
            } catch (Exception e) {
                System.out.println("Unkonwn error");
                e.printStackTrace();
            }
            return conn;     
        }
        
  public static void main(String[] args) {
			DBConnection.getConnection();
		}
}
  • Class.forName() : 동적으로 자바 클래스 로딩
    • Class.forName("oracle.jdbc.driver.OracleDriver"); : Oracle의 JDBC 드라이버 클래스 로드 → 자동으로 드라이버 인스턴스 생성하여 DriverManager에 등록 (해당 드라이버가 없으면 ClassNotFoundException 오류 발생)
    • DriverManager클래스 : 자바 애플리케이션을 JDBC드라이버에 연결시켜주는 클래스
  • Connect conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "계정이름", "비밀번호"); : getConnection()메소드로 DB에 연결하여 Connection객체 리턴

🔷 Statement 클래스 : SQL문을 실행

  • Statement stmt = conn.createStatement();

🔹 데이터 검색

  • ResultSet rs = stmt.executeQuery("select문");
  • ResultSet클래스 메소드
    • rs.next() / rs.previous() : 커서를 다음/이전 행으로 이동
    • rs.first() / rs.last() : 커서를 첫번째/마지막 행으로 이동
    • rs.close() : ResultSet 객체 DB와 JDBC 리소스 즉시 반환
    • rs.getXxx(String "열이름") : 지정된 열이름에 해당하는 데이터 반환
    • rs.getXxx(int 열번호) : 지정된 열 인덱스에 해당하는 데이터 반환
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from 테이블명"); //모든 데이터 가져오기
ResultSet rs = stmt.executeQuery("select 열이름 from 테이블명"); //특정 열 검색
ResultSet rs = stmt.executeQuery("select 열이름 from 테이블명 where 조건"); //조건 검색

//검색한 데이터 출력
while(rs.next()){ //다음행이 있으면
		System.out.print(rs.getString("컬럼명")); //데이터 출력
}
rs.close(); //DB와 JDBC리소스 즉시 반환

🔹 데이터 변경 (추가/수정/삭제)

  • stmt.executeUpdate("insert문/update문/delete문")
Statement stmt = conn.createStatement();
int n = stmt.executeUpdate("insert into 테이블명 values(값,...)"); //레코드 추가
int n = stmt.executeUpdate("update 테이블명 set 열이름=값,..."); //레코드 수정
int n = stmt.executeUpdate("delete from 테이블명"); //레코드 삭제
//n은 sql문 수행으로 영향 받은 행의 개수
profile
개발, 분석 배운 내용 정리하기!

0개의 댓글