Preparedstatement 인터페이스를 활용하여 자바 jdbc 효율적으로 컴파일해보자

안녕하세요

이번 시간에는 다시 자바 jdbc 진도를 나가려고 합니다.

아 자바도 좋지만,

요새 최순실 사태로 나라가 개판이네요...

정말 대한민국이 부끄럽습니다

빨리 박근혜가 하야하고 최순실도 구속하고 그 일가들 재산 모두 몰수 했으면 좋겠습니다


자 어쨋든 소스 코드와 결과 화면 보여드리겠습니다


==========================================================


public class PreparedStatementTest2 {

public static void main(String[] args) throws Exception {

//메모 테이블의 내용을 수정하자 (작성자, 메모내용, 작성일)
Scanner sc = new Scanner(System.in);
System.out.println("수정할 글번호 입력=>"); // PK = WHERE 조건절
int idx = sc.nextInt();
System.out.println("수정할 작성자 입력=>");
String name = sc.next();
sc.skip("\r\n"); // 엔터값 건너뛰기
System.out.println("수정할 메모내용 입력=>");
String msg = sc.nextLine();
System.out.println(idx+"/"+name+"/"+msg);

FileReader fr = new FileReader("DB.properties");
Properties p = new Properties();
p.load(fr);

// 드라이버 로드
Class.forName(p.getProperty("driver"));
String url = p.getProperty("dburl");
String user = p.getProperty("user");
String pwd = p.getProperty("pwd");

Connection con = DriverManager.getConnection(url,user,pwd);
System.out.println("DB연결 성공");

//PreparedStatement는 sql문을 전처리(미리 컴파일)
//시켜놓기 때문에 객체를 얻어오기 전에 미리 sql문을 작성해 놓아야 한다.
String sql = "UPDATE memo SET name=?, msg=?, wdate=sysdate WHERE idx=?";
/* ?
* IN Parameter(?를 말함)
* PreparedStatment는 ?를 제외한 sql문을 DB 포맷에 맞게
* 컴파일 하여 미리 준비시켜 놓는다
* */

PreparedStatement pstmt=con.prepareStatement(sql); // ? 를 제외하고 이 때 딱 한번 컴파일함
//Statement stmt = con.createStatement(sql);

//DB에 전송하기 전에 IN Parameter 값 셋팅
pstmt.setString(1, name); // 첫번째 ?
pstmt.setString(2, msg); // 두번째 ?
pstmt.setInt(3, idx); // 세번째 ?

int cnt=pstmt.executeUpdate(); // DB에 전송

String str=(cnt>0)?"성공":"실패";
System.out.println(str);

pstmt.close();
con.close();
sc.close();


}

}


==========================================================

결과 화면




현재 오라클 memo 테이블에 위와 같이 데이터가 있습니다

저는 4번째 튜플을 바꾸겠습니다.



위의 작성한 소스코드를 run 하면

수정할 글번호,작성자,메모내용을 입력하라고 합니다

저는 4번째 데이터를 바꾸기 위해

작성자를 '최순실' 로, 메모내용을 '나는 역적입니다' 로 바꾸겠습니다



다시 오라클에서 조회하게 되면

짜잔~

4번째 튜플이 바뀌었네요 ㅎㅎ

아무튼 퍼킹 코리아 정신좀 차렸으면 좋겠습니다

댓글 없음:

댓글 쓰기