외운다기 보다 이 흐름을 생각하면 더 좋을 것 같다
- Connection으로 부터 conn을 받아온다
- 이때 DriverManager의 도움을 받아 사용하고자 하는 DB와 Connection을 생성한다
- Connection이 생겼으면 하고자 하는 동작에 대한 것이 필요해진다
- PreparedStatement를 준비하고 원하는 동작(SQL)문을 등록해준다
- PreparedStatement(pstmt)에 필요한 것들을 setXXX를 통해 세팅해준다
- 이후 execute를 해주면 된다
public class Main4 {
public static void main(String[] args) throws IOException {
String SQL;
PreparedStatement pstmt = null;
ResultSet rs = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("선택: (delete, update)");
String choice = br.readLine();
System.out.println("잠시만 기다려주세요");
String url = "jdbc:mysql://127.0.0.1:3306/workshop";
try (Connection conn = DriverManager.getConnection(url, "root", "0000")){
System.out.println("기분 좋게 만들 작성자 입력:");
if (choice.equals("delete")) {
SQL = "delete from book_tb where writer = ?";
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, br.readLine());
} else {
String writer = br.readLine();
SQL = "update book_tb set title = ?, price = ?, publisher = ? where writer = ?";
pstmt = conn.prepareStatement(SQL);
pstmt.setString(1, "Error!!!");
pstmt.setInt(2, -1);
pstmt.setString(3, "Error!!!");
pstmt.setString(4, writer);
}
pstmt.executeUpdate();
} catch (SQLException e) {
throw new RuntimeException(e);
} finally {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
if (pstmt != null) {
try {
pstmt.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
}
}
- 데이터를 읽어 올 때는 executeQuery()
- ResultSet에 저장 후 반환
- 나머지는 executeUpdate()
JDBC 트랜잭션
conn.setAutoCommit(false);
//소작업 처리
//소작업 처리
//소작업 처리
conn.commit();
//실패시
catch rollback();
//끝나면
finally conn.setAutoCommit(true);
'프로그래밍 > JAVA' 카테고리의 다른 글
[Java] 정규 표현식 (0) | 2024.08.02 |
---|---|
[Java] 자바 21이후~ (0) | 2024.08.02 |
[Java] 중첩 인터페이스 (0) | 2024.07.29 |
[Java] 로컬 클래스 (Java 8, 17) (0) | 2024.07.29 |
[Java] Java15 이후 제공되는 봉인된 클래스 sealed (0) | 2024.07.29 |