java.sql 관련 사용법을 더 보셔야할 것 같습니다.
ResultSet rs = st.exequteQuery("QUERY");
while(rs.next()){
boolean isMe = rs.getString("name").equals("MYNAME");
}
처럼 사용하셔야 합니다.
if(true or false){
}else{
}
라고 한다면 용훈님 말씀대로 무한대기모드로 빠지는 경우는 없습니다.
다름 코드가 실행 될 테니까요
그렇기 때문에 도저히 무슨 뜻인지 모르겠다는 것이에요 ㅠㅠ
분명히 코드대로 진행됬을 테고 else {} 부분이 동작했을 텐데
무엇이 무한모드로 빠진다는 것인지 모르겠습니다..... ㅠㅠ
무한모드로 빠진다는것은 두가지 문제가 있는것으로 보입니다.
1. else 부분에서 무슨 특정 코드를 처리해주어야지 되던 안되던지 결과를 내야하는데 아무것도 없어서 그냥
코드가 끝난것일 수도 있고
2. while 문이 있어서 무한에 빠진것일 수도 있고
등등등의 상황이 있는데
질문글과 현재 문제에 빠지신 상황의 설명이 너무 부족합니다.
아.. 제가 안드로이드에서 HttpPost 요청 보낼 때 스레드로 다이얼로그를 띄워놓은 후 작업하다보니,
무한대기모드로 표현된거 같습니다 ^^;; 말씀하신대로 if와 else문에선 무한대기모드가 없는게 맞구요.
제 기준에서 설명하다보니 잠시 착각을 했습니다 ^^;
while(rs.next()){
if(rs.getString(1).equals("name")){
// 성공 페이지 이동
} else {
// 실패 페이지 이동
}
}
System.out.println("test");
로직은 이런식으로 짜여져 있고.. 만약 rs.getString(1).equals("name") 부분이 true 라면 정상적으로 성공 페이지로 이동합니다.
그런데 값이 false일 경우, 그냥 if 문 자체를 빠져나와서 System.out.println("test"); 부분이 실행되네요.
그래서 else if(!rs.getString(1).equals("name"){//실패 페이지 이동} 으로도 시도해봤지만 여전히 System.out.println("test"); 로 이동되서
코드가 출력되는데 이상하다는 겁니다.. 흐흑.
그냥 용훈님 말씀대로 동작하는게 정상입니다.
if {} 에서 동작을 하던
else{} 에서 동작을 하던 둘중 하나의 동작이 일어 났으니
다음 행의 코드를 실행할것이고
그 다음 코드가 System.out.... 이니 if 에서 true 이던 false 이던 무조건 동작하는 것 입니다.
만약에 System...을 false 일때 동작시키고 싶지 않으시면 System...을 if(true){ 이 안에 넣으시면 됩니다. }
1. Exception이 발생하는걸 try문으로 흘리지 않으셨다면 무조건 if나 else문의 코드가 동작할거구요
2. 페이지 이동 부분의 코드가 문제가 있어 제대로 작동을 안했을 수도 있겠죠
3. <아래>
if(){
여기에 LOG A
}else{
여기에 LOG B
}
를 찍어보시면 동작하는지 안 하는지 아실것 같아요
로그가 A도 B도 안나오는지 확인해보세요
이건 뭐 코드도 안보고 답변하는건데
프로그램은 생명체가 아니라서 순서대로 동작 합니다.
프로그램이 정상 동작하지 않는다면
프로그래머 자신의 잘못이지 그걸 왜 안할까? 난 제대로 했는데
이런건 없습니다.
로그 결과를 알려주시면 감사하겠습니다.
선후님 감사합니다^^
말씀대로 코드 실행시켜보니, 제대로 작동을 하는군요.
그리고 질문의 근본적인 원인도 발견하고 해결했습니다 :)
원인은 data 존재여부를 떠나서 오로지 값이 틀리고 맞냐만 비교했기 때문이었습니다.
유저 아이디가 테이블에서 존재할때, 만약 비번이 틀리다면 실패 페이지로 이동하지만
유저 아이디가 테이블에 존재하지 않을 경우, true false 값을 내리지 못하기 때문에
if else문에 해당하는 조건이 없어서 그냥 아래 나머지 코드들이 실행된 결과로 보입니다.
그래서 성공할 경우엔 임의로 만들어둔 success.xml 페이지로 sendRedirect() 시키고,
그렇지 않을 경우엔 out.println("<result>failed</result>"); 코드를 를 while문 밑에 두어서
클라이언트 단의 XmlPullParser 동작시에 failed를 문제없이 읽도록 수정하였더니 모두 해결했네요 :)
덕분에 이것저것 시도해보면서 해결된것 같습니다ㅎㅎ
감사합니다~
// Move to Login Result Page
while (rs.next()) {
String DB_name = rs.getString("name");
String DB_pass = rs.getString("pass");
boolean isId = DB_name.equals(vname);
boolean isPass = DB_pass.equals(vpass);
if (isId && isPass) {
res.sendRedirect(res.encodeRedirectURL("http://localhost:8888/PostsqlLoginServer/success.xml"));
} else if (isId && !isPass) {
res.sendRedirect(res.encodeRedirectURL("http://localhost:8888/PostsqlLoginServer/failed.xml"));
}
}
out.println("<result>failed</result>");
음 제가 설명해드리고 싶은데
무엇을 질문하는지 자체를 모르겠어요 ㅠㅠ