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이 잘안된다.. 내일은 이걸로 시간 다보내겠구나
[Tomcat 에러]Several ports (8005, 8080, 8009) required by Tomcat v9.0 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port.
무결성 : -> 데이터 중복을 제거하는 방식으로 -> 파일(뷰)-> 쪼갬(집중화) -> 테이블
사용할 때는 : 테이블 -> 합쳐서 (뷰)-> 파일
테이블을 합칠 때 기준? 객체지향DB, RDBMS:관계
관계가 무엇인가요? : 행위를 말한다.
주어(테이블) 동사(행위:관계) 목적어(테이블)
[회원:주어]이 [게시글:대상]을 등록[행위:관계]하다.
[제일 먼저 해야 할 가이드 1] 주어를 찾는 것.==주체를 찾는 것==행위자를 찾는 것==역할자를 찾는 것
사람수 != 역할자수
---------- ICODA를 보면서 이 사이트에서의 역할자를 찾으시오 --------- 회원 비회원 관리자 판매자
------ 역할자를 찾았으면 등록이라는 행위를 하게 되는 대상을 찾으시오.----- -회원(이) [ ]를 등록하다.
관심상품 X : 회원이 상품을 등록하진않는다.
행위는 두개넣지말기
-관리자(이) [ ]를 등록하다.
판매자관리
-판매자(이/가) [ ]를 등록하다.
------ 위의 문제에 대한 리뷰 ------------- 회원이 등록 - 회원정보 (주소, 이름, 전화번호,,) - 장바구니 (X) ==> 등록하다에 어울리는 대상은 아님 ~에 "담다"를 말하는 행위에 더 어울림 - 관심 상품 ==> 합성어는 단위를 쪼개서 처리해야 함. 행위를 명사에 붙여서 표현하면 모든 것이 대상이 될 수 있음. - 상품 평 - 상품정보 ==> 정보라는 어휘는 생략하는 것이 바람직함. - 상품 문의 (질문)
<가이드> 1. 합성어는 분리하고 분리한 어휘에서 행위는 제거하시오. 2. 정보라는 단어는 제거하시오. 3. 그 후에 남은 어휘가 등록이라는 대상에 어울리는지 확인하시오. 4. 속성명은 그것의 구조화된 데이터로 변경하시오.
------------------------------------------------------------------- 회원이 [글]을 등록하다. 관리자가 [이벤트/공지사항/배너광고] 등록하다. 판매자는 [상품]을 등록하다.