JDBC
JDBC란?
- 자바에서 데이터베이스를 사용하기 위한 절차에 대한 규약입니다.
이클립스에서 JDBC 등록하기(MySql)
- jar파일 다운로드 (https://dev.mysql.com/downloads/connector/j/)
- JDBC를 연결할 프로젝트 Properties내부의 Java Build Path 이동
- Libraries -> Add Library... -> User Library -> User Libraries
- 이름 작성 -> Add External JARs -> jar 파일 선택
(mysql-connector-java-(버전)-bin.jar)
JDBC 사용하기
- Connection 객체를 자동완성으로 import 할 때는 com.mysql.connection이 아닌 Java 표준인 java.sql.Connection 클래스를 import 해야 한다.
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/연결DB명";
conn = DriverManager.getConnection(url, 아이디, 패스워드);
String sql = "SELECT COL1, COL2, COL3 FROM TABLE";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while(rs.next()){
int col1 = rs.getInt(1);
String col2 = rs.getString(2);
String col3 = rs.getString(3);
System.out.println(col1 + " / " + col2 + " / " + col3);
}
} catch (ClassNotFoundException e) {
System.out.println("드라이버 로딩 실패")
} catch (SQlException e) {
System.out.println("에러" + e)
} finally {
try {
if(conn != null && !conn.isClosed()) {
conn.close();
}
if(stmt != null && !stmt.isClosed()) {
stmt.close();
}
if(rs != null && !rs.isClosed()) {
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
- 쿼리에 동적으로 할당되는 값이 없는 경우 createStatement()메서드를 호출하여 쿼리 실행을 위한 Statement 객체 생성
Connection conn = null;
PreparedStatement pstmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/연결DB명";
conn = DriverManager.getConnection(url, 아이디, 패스워드);
String sql = "INSERT INTO TABLE VALUES(?, ?, ?, ?)";
pstmt = conn.preparedStatement(sql);
pstmt.setInt(1, param1);
pstmt.setString(2, param2);
pstmt.setString(3, param3);
pstmt.setString(4, param4);
int count = pstmt.executeUpdate();
if(count == 0){
System.out.println("쿼리 실행 실패");
}
} catch (ClassNotFoundException e) {
System.out.println("드라이버 로딩 실패")
} catch (SQlException e) {
System.out.println("에러" + e)
} finally {
try {
if(conn != null && !conn.isClosed()) {
conn.close();
}
if(pstmt != null && !pstmt.isClosed()) {
pstmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
상황 |
사용 객체 |
정적 쿼리 실행 |
Statement |
동적 쿼리 실행 |
PreparedStatement |
상황 |
사용 메서드 |
리턴 객체 |
쿼리 실행 결과 유(SELECT) |
executeQuery() |
ResultSet |
쿼리 실행 결과 무(INSERT, UPDATE, DELETE) |
executeUpdate() |
int |