2013-05-21 2 views
0

데이터베이스에서 항목 목록을 찾으려고하지만 예외가 발생합니다. 내 코드와 오류는 다음과 같습니다. 모든 필드 유형이 올바른 것입니다.코드 스로우 심각도 : 매개 변수 1에 대해 지정된 값이 없습니다.

코드

 System.out.println("2"); 
     try { 
      ps = con.prepareStatement("SELECT * from Users Where name = ?);" 

     ResultSet r = ps.executeQuery(); 
     ps.setString(1, "jack"); 
     ResultSet result = ps.executeQuery(); 
     .... 
     } catch (SQLException e) { 
      System.err.println(e.getMessage()); 
      System.out.println(e.getStackTrace()); 
     } 

출력하여 PreparedStatement에 매개 변수를 설정하기 전에 당신은 ResultSet r = ps.executeQuery();를 호출하고

INFO: 2 
SEVERE: No value specified for parameter 1 
INFO: [Ljava.lang.StackTraceElement;@6520c5b 
+1

예외가 발생한 줄을보고 오류를 쉽게 찾을 수 있었습니까? –

+0

@AlexandreLavoie는 어디에 줄이 있는지 모른다. – J888

+2

Luiggi가 대답 했으니, 나는이 줄에서 예외가 발생했다는 것을 확신한다 : ResultSet r = ps.executeQuery(); –

답변

2

. 당신이 PreparedStatement에있는 매개 변수를 설정하는 아래 비슷한 줄을 가지고 있기 때문에 아마이 방법을 코딩 할 때 오자가 될 것입니다. 당신은 당신의 코드에 일반 System.out.println 통화 대신 로거를 사용하는 경우

ps = con.prepareStatement(...); 
//comment this line 
// ResultSet r = ps.executeQuery(); 
ps.setString(1, "1"); 
//... 
ResultSet result = ps.executeQuery(); 

직접 귀하의 질문에 관련하지, 그것은 더 좋을 것이다. 로그에 더 나은 메시지를 제공하여 코드를 유지 관리하는 데 도움이됩니다.

+0

질문 범위 밖에있는 로커 – J888

+0

@JackRamzi의 예를 들어주세요. 또한 모든 로거를 사용하는 대신 응용 프로그램 서버에서 사용되는 로거 구현을 확인하고 (Java EE로 먼저 질문했기 때문에) 응용 프로그램 서버에서 포럼에서 응용 프로그램에서 로거 사용 방법을 확인하십시오. –

관련 문제