2013-07-11 13 views
0

매우 간단한 쿼리를 작성하고 있습니다. 그러나 나는 오류를 찾을 수 없습니다. 다음은 코드입니다.왜이 쿼리가 작동하지 않습니까?

con = DBConnect.connect(); 

try { 
    PreparedStatement query = (PreparedStatement) con.prepareStatement("SELECT * FROM accounts where iban=?"); 
    query.setString(1, iban); 

    ResultSet result = (ResultSet) query.executeQuery(); 
    double oldBalance; 
    } catch (SQLException e) { 
     System.out.println(e); 
    } 

테이블 이름은 계정이며, iban이라는 varchar 유형의 열이 존재합니다. 나는 디버그를했기 때문에 query.setString(1, iban); 라인이 iban을 올바르게 설정했다고 확신한다.

그러나 ResultSet result = (ResultSet) query.executeQuery(); 줄에 오는 경우 갑자기 마지막 줄로 이동합니다.이 줄의 마지막 줄은 "}"입니다. 그것은 catch 블록에 들어 가지 않아서 문제를 볼 수 없습니다.

무엇이 잘못 되었습니까?

감사

편집 : 쿼리가 성공적으로 실행처럼 보인다.

double oldBalance=result.getDouble("iban"); 

을 그리고 그것은 나에게 오류 제공 : 지금하는 executeQuery 줄 끝에서 난 그냥 할

java.sql.SQLException: Before start of result set 

사람이 여기 나에게 문제를 말할 수 있습니까?

+0

먼저 메서드를 반환 할 때와 같은 형식으로 개체를 캐스팅 할 필요가 없습니다. ResultSet과 PreparedStatement 캐스트는 중복됩니다. 둘째, 연결에서 기본 DB를 선택 했습니까? 연결 지정 스키마에 의존하는 대신 항상 명시 적이어야하며 SELECT * FROM schema.table이어야합니다 (공용 스키마에 있지 않은 경우 MySQL과 만 작동합니다) –

+0

프로젝트를 지우고 다시 작성하십시오. 그런 다음 다시 실행하십시오. –

+4

'oldBalance' 변수가 지정되지 않았습니다. 'executeQuery' 라인 이후에,'try' 블록에서 아무것도하지 않기 때문에 마지막 라인으로 건너 뛸 것입니다. –

답변

1

코드를 디버깅 할 때 ResultSet result = (ResultSet) query.executeQuery(); 행에 있으면 try 블록에서 완료된 이후로 다음 단계로 넘어 가면 블록 끝으로 이동합니다 .

쿼리가 실제로 정상적으로 작동 할 수 있으므로 블록 내에 ResultSet이 할당되어 있으므로 블록에서 해당 쿼리를 수행해야합니다.

편집 : 다른 문제는 answer을 확인하십시오.

+0

고마워. 너 미쳤어. 하지만 편집 된 질문을 다시 한 번 보시겠습니까? – yrazlik

+0

@iceface 대신 다른 질문을해야하지만 편집에 대한 대답을위한 링크를 추가했습니다. 모든 것이 당신의 질문에 대답한다면, 대답을 받아들이는 것을 잊지 마십시오. –

관련 문제