관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

자바 JDBC 13 - 학생 정보관리 프로그램 만들기 5 : 학생 정보를 수정하고 삭제하는 최종 코드 작성 및 수정하기 본문

프로그래밍 언어/자바

자바 JDBC 13 - 학생 정보관리 프로그램 만들기 5 : 학생 정보를 수정하고 삭제하는 최종 코드 작성 및 수정하기

huenuri 2024. 12. 14. 08:15

어제 오후 3시까지 공부하다가 그 이후로는 갑자기 공부에 대한 열정이 떨어져 거의 놀기만 했다. 아니 저녁에 사실 공부하려고 했는데 오후에 내가 작성했던 학습일지가 모두 날아간 것을 보고 갑자기 하기가 싫어졌다. 그리고 JDBC 책으로 공부하는데 이클립스 설정에 어떤 문제가 있어서 그 오류를 잡는데 시간을 한참 보냈다.

그리고 졸려서 일찍 잠을 청했다. 새벽 2시에 알람이 울렸으나 충분히 일어날 수 있었음에도 오늘은 그냥 일어나기가 싫었다. 

어쨌든 난 오늘을 꼭 기억하기로 했다. 내게 세운 모든 계획들은 모두 이루어질 것이라는 말씀의 확신을 받았으니 오늘 하루도 힘차게 시작해보기로 했다. 난 세상을 놀랍게 변화시킬 대단한 일을 할 것이다!


 

 

 

 

 

학생정보관리 프로그램 만들기 마지막

 

Main 클래스에서

 

1. 학생 정보 수정하는 기능과 출력문 만들기

 

 

그런 다음 자료형도 다음과 같이 바꾸어 준다.

 

아직은 빨간줄이 뜨고 있다. 신경 쓰지 말고 다음을 진행해 보겠다.


 

 

 

 

2. 학생 정보 삭제하는 기능과 출력문 만들기

 

이제 controller에 이러한 기능을 접근할 수 있는 메서드들 만들면 모든 작업이 끝난다.


 

 

 

 

Controller 클래스에서

 

1. 수정하는 기능 만들기

 

먼저 학생정보를 수정하는 기능을 만든다. 아직 dao에서 코드를 작성하지 않아 오류가 뜨고 있다. 여기서부터는 수업 시간이 짧아서 선생님이 자료만 올려주셨다. 그동안 선생님이 올려주신 자료를 한 번도 살펴보지 않았지만 이번에 처음으로 열어보았다. 이젠 import하는 것도 잘할 수 있기 때문이다. 전에는 어떻게 받아야 할지 모르기도 하고 새 프로젝트도 여는 것도 귀찮아서 미루었던 것 같다.


 

 

 

2. 삭제하는 기능 만들기

이제 삭제하는 기능도 만들어보면 다음과 같다.

 

처음에 등록할 때 진행했던 코드에서 출력문만 변경되었다.


 

 

 

 

StudentDAO 클래스에서

 

1. StudentDAO에서 학생 정보 수정하는 기능 만들기


 

 

 

2. StudentDAO에서 학생 정보 삭제하는 기능 만들기


 

 

 

 

StudentDTO 클래스에서

 

1. 매개변수 3개짜리 생성자 만들기

 

 


 

 

 

 

2. 매개변수 2개짜리 생성자 만들기

 

 

 

 

학생 정보를 수정하고 삭제할 때 받아올 입력값의 매개변수의 개수가 다르니 생성자도 오버로딩하여 이렇게 만들어주었다.


 

 

 

 

 

Main 클래스에서

이제 Main에서 마지막 작업을 진행해 보겠다. 사용자가 입력할 수 있는 기능을 만들고 이제 수정한 dto와 dao를 반영하는 일이 남아있다.

 

1. 학생정보 수정하는 기능에서 코드 추가하기

 

Scanner로 입력을 받는 코드를 추가했다. 그런 다음 StudentDTO 자료형도 매개변수의 개수만큼 생성했다.

 

 


 

 

 

2. 학생 정보 삭제하는 코드 추가하기


 

 

 

 

빨간 줄이 뜨는 오류 해결하기

 

1. 문제 상황

코드를 모두 수정했는데 여전히 Controller에서 dao 오류가 뜨고 있다. 이제 이 문제를 해결해 볼 것이다.


 

 

2. 문제 해결하기

 

dao를 학생 등록하는 메서드 안에 선언해 주었다. 이 코드를 맨 앞으로 옮기니 이제 빨간 줄이 사라졌다.

 

 


 

 

 

 

코드 실행하며 확인하기

지금까지 작성한 코드가 제대로 된 것인지 확인해 보기로 하자.

 

1. 코드 실행하기

 

학생 등록은 잘 되었다.

 

 

오라클에서 확인해 보니 이렇게 6명의 학생 정보가 조회되었다.


 

 

 

2. 문제 상황

 

학생 정보 수정 중에 이러한 오류가 떴다. 하지만 이후에도 오류가 계속 떠서 코드를 전체적으로 손보기로 했다. 근데 선생님이 잘못 쓴 코드가 여러 개 보였다.


 

 

 

3. 테이블 이름 오타 수정하기

테이블 이름의 스펠링을 틀리게 쓴 것을 확인했다.

 

 

이렇게 고쳤음에도 아직 오류가 뜨고 있다. 두 번째, 세 번째 문제도 해결해 보겠다.


 

 

 

4. update 메서드에서 ? 매핑 오류

? 매핑을 할 때 인자값이 잘못되었다. dto.getName()과 dto.getAge()의 순서가 잘못되어 SQL 구문 실행 시 오류가 발생할 수 있다.


 

 

 

 

5. 입력값 검증 코드 추가

사용자가 숫자나 문자열 외의 잘못된 입력을 할 경우 예외가 발생하는 상황에 대한 catch 문을 추가했다.


 

 

 

6. 코드 다시 실행하기

 

김수연을 기계공학과로 바꾸니 다음처럼 정보가 수정되었다.

 

 

 

그리고 박보화라는 사람도 두 명이 있었는데 모두 삭제되었다. 이름과 나이가 같으니 학과가 달라도 함께 삭제되었다.

 

 

 

 

조회와 검색 기능은 아직 구현되지 않아서 코드에 다음과 같은 문구를 넣었더니 이제 반응이 없어 사용자를 혼란스럽게 하는 일이 없게 되었다.

그리고 어떤 프로그램인지도 소개하는 문구를 넣었다.


 

 

 

 

학습을 마치고

수업 시간은 짧았지만 단원이 달라서 이전의 학습을 종료하고 새 노트에 쓰는 것이 나을 것 같았는데 내 예상이 맞았다. 오늘 아침에 일어나서 1시간 반 동안이나 더 진행해야 하는 굉장히 어려운 코드였다.

오류도 많았고 선생님이 코드를 잘못 쓰신 부분이 이 있었지만 그 부분도 수정하면서 정말 많은 것들을 배울 수 있었다. 아직 JDBC 공부가 남아있지만 그 내용도 충분히 공부할 수 있을 것 같다. 이제 어제 하려고 했던 공부를 책으로 마무리해 보겠다.