JDBC

[JDBC] JDBC 프로그래밍 - MySQL

jane.dev 2021. 8. 8. 21:22
반응형
JDBC(Java Database Connectivity)
자바 프로그램에서 SQL문을 실행하여 데이터를 관리하기 위한 Java API

 

DB와 Java의 연결 순서

// 1. 데이터베이스 Connection 객체(java.sql 패키지가 지원하는 데이터베이스 커넥션) 생성
Connection con = null;
// 2. 쿼리문 실행을 위한 PreparedStatement 객체 생성
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
    // 3. DBMS 통신을 위한 JDBC 드라이버 로드
    Class.forName("com.mysql.jdbc.Driver");
    String url = "jdbc:mysql://호스트명:포트번호/DB명";
    // 4. getConnection() 메서드를 사용해 커넥션을 구하면 메서드는 DB와 연결된 커넥션 객체를 리턴
    con = DriverManager.getConnection(url, "DBid", "DBpw");	
    // 5. SQL문 작성
    String sql = "SELECT * FROM 테이블명 WHERE 컬럼명 = ?";
    pstmt = con.prepareStatement(sql);
    pstmt.setString(1, ?자리에 넣을 데이터);		// 첫 인덱스 값은 1
    // 6. SQL문 실행
    rs = pstmt.executeQuery();
    // 7. SQL문 결과 값의 존재 여부를 확인
    rs.next()
 // 8. 객체를 제대로 생성하지 못할 경우 예외처리
}catch{SQLException e){
	System.out.println("에러: " + e);
}finally{
	try{
    	// 9. 객체를 사용하고 난 뒤에는 close() 메서드를 호출하여 객체가 사용한 시스템 자원 반환
    	if(con != null && !con.isClosed()){
        	con.close();
        }
        if(pstmt != null && !pstmt.isClosed()){
        	pstmt.close();
        }
        if(rs != null && !rs.isClosed()){
        	rs.close();
        }
    }catch(SQLException e){
    	e.printStackTrace();
    }
}

Statement 객체와 PreparedStatement 객체는 쿼리문을 실행하는 동일한 기능을 제공함

-   Statement: 지정할 값이 많아지면 코드 작성에 오류가 발생할 수 있을 정도로 복잡하게 작성됨

-   PreparedStatement: 값 변환을 자동으로 해주는 기능을 제공하며, 값 지정 시 '?' 로 간결한 코드 작성 가능