JDBC란, 자바에서 데이터베이스에 접속할 수 있도록 하는 자바 API이다.
1. 실행중인 DB
사용하려는 DB가 실행중이어야 한다. 이는 윈도우 검색창에 '서비스'를 검색하고, 해당 DB를 찾아보면 실행 여부를 알 수 있다.
2. 드라이버 매니저를 통해 특정 DB에 접속 객체 생성
public Connection getConnection() throws SQLException {
return DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:xe","ora01","oracle_4U");
}
3. sql문장이 실행 가능한 객체 생성
Statement stmt = null;
stmt = con.createStatement(); //oracle db에 접속된
//Connection객체로 부터 획득
4. sql문장 실행 (메소드 호출)
ResultSet rset = null;
rset = stmt.executeQuery("select * from dept");
5. 결과 활용
while(rset.next()) {
System.out.println(rset.getInt("deptno") + "/"
+ rset.getString("dname") + "/"
+ rset.getString("loc"));
}
6. 자원 반환
public void close(Connection con, Statement stmt, ResultSet rset) {
try {
if (rset != null) {
rset.close();
rset = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (con != null) {
con.close();
con = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public void close(Connection con, Statement stmt) {
try {
if (stmt != null) {
stmt.close();
stmt = null;
}
if (con != null) {
con.close();
con = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
❗❗ 자원 반환 순서 매우 중요 ❗❗
ResultSet → Statment → Connection
public void deleteOne() {
Connection con = null;
Statement stmt = null;
try {
con = getConnection();
stmt = con.createStatement();
int result = stmt.executeUpdate
("DELETE FROM dept WHERE deptno=60");
if (result == 1) {
System.out.println("삭제 성공");
} else {
System.out.println("삭제 실패");
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (con != null) {
con.close();
con = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public void updateOne() {
Connection con = null;
Statement stmt = null;
try {
con = getConnection();
stmt = con.createStatement();
//executeUpdate : insert/update/delete sql문장 처리 메소드
int result = stmt.executeUpdate
("UPDATE DEPT SET loc='평양' WHERE deptno=60");
if (result == 1) {
System.out.println("수정 성공");
} else {
System.out.println("수정 실패");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(con, stmt);
}
}
public void insertOne() {
Connection con = null;
Statement stmt = null;
try {
con = getConnection();
stmt = con.createStatement();
//executeUpdate : insert/update/delete sql문장 처리 메소드
int result = stmt.executeUpdate("insert into dept values
(60, '교육부', '남부')");
if (result == 1) {
System.out.println("저장 성공");
} else {
System.out.println("deptno 중복 저장 불허");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(con, stmt, null);
}
public void selectOne() {
Connection con = null;
Statement stmt = null;
ResultSet rset = null;
try {
con = getConnection();
stmt = con.createStatement();
rset = stmt.executeQuery("select * from dept where
deptno=10");
if(rset.next()) {
System.out.println(rset.getInt("deptno") + "/"
+ rset.getString("dname") + "/"
+ rset.getString("loc"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
close(con, stmt, rset);
}
}