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