ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 221230. DB 10. JDBC (수정, 삭제)
    스타터스 백엔드 3기 2023. 1. 3. 14:24

    하루입니다.

     

     


     

    • update는 sc.nextLine 사용함.
    • 이걸 split() 한다.
    • 모르는 부분 : split()의 리턴값은 String[]이다. 이 값을 hashMap<>에 어떻게 넣지?
    • String 배열의 값을 hashMap<>에 넣는 법

     

    1. split()한 결과물을 String[]에 넣는다.

    2. split()한 결과물과 배치되는 column명을 String[]에 담는다. 

    3. hashMap<>을 생성한다.

    4. 3번의 hashMap<>에 for문을 사용해서 key에 column명을, value에 split()한 결과물을 넣는다.

     

     

    UpdateView

    빈칸이 아닐 경우만 map에 put한다.

     

     

     

    userDao

     

     


     

     

    delete 하기 위한 두 가지 방법이 있다.

    • 1. User 테이블에 deleted 컬럼을 만들어서 Y/N 이런 값 주는 것.
    • 2. DeletedUser 테이블을 만들어서 User테이블에서는 삭제하고, DeletedUser 테이블으로 붙여넣는 것.

    아래는 2번 방법이다.

     

     

     

    주의점

    • 이 방식은 2개의 테이블을 다룬다.
    • sql1은 제대로 적혔고, sql2는 잘못 적혓다고 하자.
    • sql1이 실행되어 DeletedUser 테이블으로 해당 id의 데이터가 insert되지만, sql2는 오류로 실행되지 않아 delete되지 않을 것이다. 그러면 삭제 요청한 유저의 정보는 member 테이블에 남아있겠지만, Deleteuser테이블에도 남아있게 된다. 잘못됨!!!
    • 이런 경우를 방지하기 위해 Connection의 serAutoCommit() 설정을 false로 한다.
    • 만약 에러가 발생한 경우, catch되어 rollback() 된다. (try catch 또 한 건 rollback 자체가 예외를 처리하도록 강제되었기 때문)
    • 에러가 발생하지 않은 경우, commit()된다. 

     

     

     


     

    workspace_java

    jdbc

    member_crud : MemberUpdateView, MemberSeleteView, MemberInsertView, MemberDeleteView 참고

Designed by Tistory.