:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
12/12/10 21:40
1. throw new SQLException("값이 비었습니다."); 이렇게 exception 을 날리면 어디선가는 받아서 처리를 해줘야 합니다.. 위의 소스 대로라면 try if 위까지 올려서 throw 한 것을 받을 수 있게 하면 됩니다.
try if(Equip_id=="" || Equip_type=="" || Maintenance_start=="" || Maintenance_finish=="") 이런식으로요 2. 위치상으로는 저기가 맞습니다. 어떤 에러가 뜨는지 구체적으로 모르면 답을 드릴 수가 없네요.. 3. 구문이 제대로 완성이 안됐네요.. try{ ......... ........ ...... 이렇게 되어야 하는 구조인데 try 만 있고 catch 가 없고 바로 finally 로 떨어지네요..
12/12/10 21:48
3번 감사합니다! 그런데 이렇게 바꾸니 계속 동일한 아이디가 존재하지 않다고 나와요 ㅠㅠ
그러니깐 이제 try와 catch는 제대로 해서 기본키를 변경하면 catch로 가는데, updatecount가 증가하지 않는건지 계속 동일한 아이디가 존재하지 않는다고만 나오네요...
12/12/10 22:05
updateCount 는 위 쿼리문으로 수정된 행이 몇개나 있는지를 리턴합니다.. 실제 업데이트 된 데이터가 없다는 얘기가 되는데요..
"update Equipment set Equip_type = '"+Equip_type+"', Maintenance_start = '"+Maintenance_start+"', Maintenance_finish = '"+Maintenance_finish+"' where Equip_id='"+Equip_id+"'" 이걸 그대로 출력해 봐서 의도한 대로 쿼리문이 완성되었는지 확인해 보세요.. 아마도 Equip_id 가 원하는 값으로 넘어오지 않은게 아닌가 추측해 봅니다..
12/12/10 22:02
그럼 conn.rollback() 가 발생시키는 exception 을 처리하지 않아서 인거 같습니다..
try conn.rollback(); 이렇게 처리하면 될거 같네요
12/12/10 22:17
duplicate parameter e라고 하는데 다른걸로 대체하면 되나요? 아 현재 모든 SQLException은 Excetion이에요.
12/12/10 22:41
답변은 정지연님이 다 드린거 같으니 전 부가적인 얘기를 적어봅니다.
throw new SQLException("값이 비었습니다."); 이부분에서 SQLException 을 사용하시는 것보다는 RuntimeException을 사용하는 설계방식이 더 좋습니다. 예를들어 RecoverableException 같은거요. 왜냐하면 값이 비었습니다.는 사용자에게 알려주고자 하는 메세지인데 SQLException 을 화면까지 띄워주면 보안상 문제가 있습니다. ( 그리고 해당 로직은 SQLException 이랑은 상관이 없습니다. 아직 sql 구문도 안 날렸는걸요. 차라리 IllegalArgumentException 이라면 의미는 통합니다. ) 따라서 RecoverableException 처럼 예외를 포장해서 던져줘야 합니다. 예외는 크게 checkedException 과 runtimeException 으로 구분하는데 대부분의 경우 runtimeException 을 사용하는 것이 좋습니다. Java API도 보면 과거에는 checkedException 을 많이 사용했으나 쓸데없이 try catch 가 많아지고 해당 Exception 이 발생한다고 개발자가 해줄 수 있는 것이 거의 없기 때문에 이제는 runtimeException 으로 처리하는 방식이 대세를 이루고 있습니다. 그리고 다시 보니까 어차피 sqlException 을 잡아서 한 것이 아니니까 그냥 throw new SQLException("값이 비었습니다."); 부분을 out.println("값이 비었습니다."); return; 이렇게 변경하셔도 됩니다.
|