문제점 :
너무많은 오류를 만나서 뭐부터 적어야할지 모르겠네..
- 웹에서 수정사항을 입력하면 에러발생 : 내부 표기로 변환할 수 없습니다/ 열명이 부적합합니다.
- 품종이 Pet이 아닌 breed테이블에있으므로 사용자가 직접 접근하지않게 해야한다.
- 웹에서 수정사항입력후 버튼누르면 콘솔에만 출력되고 DB에 반영안됨. 반려견이 여러마리일 경우 사용자가 원하는 반려견에 대해서만 수정적용하고 싶었다..
- 톰캣 포트에러(Tomcat 에러)
해당 강아지 아이디정보 보내기
JSP
hidden input 추가
<input type="hidden" name="id" value="<%=p.getId()%>" class="hiddenId">
PetEditController 수정
사용자가 보낸 강아지 id값(req.getParameter("id"))을 받는다
해당 강아지의 정보를 불러와(get(id)) pet객체에 대입
updatePetProfile(pet)에 꽂기.
PetService petService = new JdbcPetService();
Pet pet ;
try {
pet = petService.get(id_);//펫id
pet.setId(id_);
pet.setName(name);
pet.setGender(gender);
pet.setBirthday(birthday);
pet.setPersonality(personality);
// pet.setMemberId(id_);
pet.setBreedId(breedId);
petService.updatePetProfile(pet);
} catch (Exception e) {
resp.sendRedirect("exception.html");
}
JdbcPetService.java수정
Pet테이블에 없는열이름으로 게터 세터하고있어서 '열명이 부적합하다'는 에러 발생
Pet테이블에 없는 애들 지우기
sql left join적용해서 getList()와 형식맞추기
@Override
public Pet get(int id) {
// String sql = String.format("SELECT * FROM PET WHERE PET.ID=%d", id);
String sql = String.format("SELECT P.*,B.NAME BREED,TO_CHAR(SYSDATE,'YYYY')-TO_CHAR(BIRTHDAY, 'YYYY')+1 AGE FROM PET P LEFT JOIN BREED B ON B.ID = p.breed_id WHERE P.ID =%d", id);
try {
String url = "jdbc:oracle:thin:@hi.namoolab.com:1521/xepdb1";
Class.forName("oracle.jdbc.OracleDriver");
Connection con = DriverManager.getConnection(url, "PETHARU", "1357");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
rs.next();
String name = rs.getString("name");
String gender = rs.getString("gender");
String birthday = rs.getString("birthday");
String personality = rs.getString("personality");
int age = rs.getInt("age");
Pet pet = new Pet();
pet.setName(name);
pet.setGender(gender);
pet.setBirthday(birthday);
pet.setPersonality(personality);
pet.setAge(age);
rs.close();
st.close();
con.close();
return pet;
} catch (Exception e) {
e.printStackTrace();
throw new ServiceException();
}
}
Select option DB연동
강아지 품종테이블은 Pet과 별도이므로
- DB : Breed 테이블에 품종 및 아이디 미리 insert후, 사용자는 breed_id만 사용
- JdbcPetService : Reg, edit 의 sql에 left join 적용
- JSP(HTML) : select 태그 입력, name = "breed_id" 적용
view table생성하면 left join의 번거로움을 줄일 수있고 sql도 간편해진다고하는데 , 뷰를 위한 left join을 일단 해야하는데 left join이 잘안된다.. 내일은 이걸로 시간 다보내겠구나
'* > Project' 카테고리의 다른 글
배포 오류 (0) | 2021.08.05 |
---|---|
CodeDeploy 실패 (0) | 2021.08.04 |
AWS 웹호스팅 (0) | 2021.07.30 |
jar파일 재배포 (0) | 2021.07.28 |
Javascript Project 6. 탁구점수판 (0) | 2021.05.15 |
Team Project : 오타 /getParameter 파싱오류 / id값 전달/ 동일한 클래스선택 (0) | 2021.05.12 |
Team Project : 개별id값불러오기/hidden input태그 (0) | 2021.05.07 |
Javascript Project 5 . 요리검색 (0) | 2021.05.05 |