sql 연동 중 수정값이 반영 안되는 오류, sql연동 중 db table 이름이 안 읽히던 오류, ajax 사용 시 form action을 사용하면 안되는 이유

728x90

 

 

오늘도 어김없이 여러가지 오류로 머리가 좀 아팠는데 다행히 전부 다 해결해서 잘 수 있게 됬다.

 

빡쳤던 오늘의 오류를 하나씩 보자

 

1. CRUD를 연습하다가 sql의 DB연동은 정상적으로 연동이 되는데 수정값이 db에 반영이 안되던 이유

 

- 정말 단순하게 form안에 submit시 반영될 value값을 미리 지정해놓으니까 받아온 값 그대로 재반영이 되서 안바뀐거;; 솔직히 쓰기도 좀 쪽팔리지만 나중의 동일한 실수를 막기 위해 기록

 

<form id="updateForm" method="post" onsubmit="return update();">
	<input type="hidden" name="cmd" value="update">
	<input type="hidden" name="num" value="${vo.num}">
	<input type="hidden" name="num" value="${vo.deptno}">
	<input type="hidden" name="num" value="${vo.sal}">

 

 

2. add를 할 때 excuteQuery로 DB를 연동하는데 자꾸 그지같은 You have an error in your SQL syntax; check the manual that corresponds to your MySQL 오류 발생

 

- 아니 당연히 서식이 틀려서 나오는 오류인지 알았는데 테이블의 이름이 숫자거나 특정? 문자열일때 JS에서 사용하는 개발자 전용 `` 이 마크로 감싸줘야 오류가 해결된다.

 - 거의 30분은 잡아먹은듯...

 

추가로 ResultSet rs 사용해서 값 추출할 때(getInt, getString 등) while이랑 if문 써서 추출하자

 - ResultSet의 반환값은 boolean이니까 if() while() 괄호만 해도 작동됨

 - while if 안써서 생긴 빨간색좀 덜 보고싶다

 

 

3. 마지막으로 우리의 problem Maker인 ajax 사용법

 

 - 아직까지도 이해가 100% 잘 안되었는데 이제야 조금 감을 잡은 느낌.

ajax가 실행되는 원리는 button이나 input 태그의 submit을 통해서 function이 실행된 후 ajax로 넘어간다.

이때 submit을 통해 준 data값을 SERVICE 클래스에 넘긴 후에 값을 가져온다.

 

따라서 FORM 태그안의 action을 사용하는 것이 아님. 만약 사용한다면 값이 두번이나 계산되서 화면에 두번 출력됨.

FORM 하위 hidden input 태그를 꼭 써주고 action 안에 표시될 메인페이지를 지정해주면 중복계산도 피해갈 수 있고 메인페이지로 자동으로 이동되는 것이 확인됨.

 - 요상한게 action을 안써도 계산은 되는데 ajax의 alert가 실행이 안됨;; 그래서 표시될 mainpage로 일단 지정

 

 

 

728x90