2014-05-09 3 views
0

데이터베이스에 삽입 할 열 개의 필드가 있습니다. 표시되는 오류는 내 12 매개 변수가 ps.executeUpdate()가 정의되지 않았 음을 나타냅니다. 어떻게해야합니까?PreparedStatement 오류 : 매개 변수 12 정의되지 않음

삽입 방법은 다음과 같습니다.

public void update(User user){ 
     try{ 
     Connection conn = DbUtils.getConnection(); 
     PreparedStatement ps = conn.prepareStatement("UPDATE db.db set id = ?,username = ?,password = ?,firstname = ?, lastname = ?, fathersname =?, gender = ?, email = ?,address =? , phnno = ?, courses = ?" + "WHERE id =?"); 
     ps.setInt(1, user.getId()); 
     ps.setString(2, user.getName()); 
     ps.setString(3, user.getPwd()); 
     ps.setString(4, user.getFname()); 
     ps.setString(5, user.getLname()); 
     ps.setString(6, user.getFathername()); 
     ps.setString(7, user.getAddress()); 
     ps.setString(8, user.getEmail()); 
     ps.setString(9, user.getGender()); 
     ps.setString(10, user.getPhno()); 
     ps.setString(11, user.getCradio()); 
     ps.execute();   
     }catch(Exception e){ 
      e.printStackTrace();    
    } 
    ` 
+5

쿼리에 12 개의 플레이스 홀더가 있고 11 개만 제공합니다. –

+0

그리고 11 번째 자리 표시 자와 'WEHRE'사이에 * 공백이 있어야합니다. Shoule은'... courses =? WHERE id =? "' –

+0

BTW : 왜 사용자의 ID를 업데이트합니까? 고유하지 않습니까? 그리고 * id * 값에 대한 핸들이 없으면 쿼리가 실패 할 것입니다. 그런 다음 쿼리에서'id = ?,'를 제거하고 매개 변수 번호를 다시 매기고'setXXX'를'where id =?'에 사용하십시오. –

답변

0

함수에는 12 개의 자리 표시 자에 대한 다른 매개 변수가 있어야합니다. 다음과 같이하십시오 :

public void update(User user){ 
     try{ 
     Connection conn = DbUtils.getConnection(); 
     PreparedStatement ps = conn.prepareStatement("UPDATE db.db set id = ?,username = ?,password = ?,firstname = ?, lastname = ?, fathersname =?, gender = ?, email = ?,address =? , phnno = ?, courses = ?" + " WHERE id =?"); 
     ps.setInt(1, user.getId()); 
     ps.setString(2, user.getName()); 
     ps.setString(3, user.getPwd()); 
     ps.setString(4, user.getFname()); 
     ps.setString(5, user.getLname()); 
     ps.setString(6, user.getFathername()); 
     ps.setString(7, user.getAddress()); 
     ps.setString(8, user.getEmail()); 
     ps.setString(9, user.getGender()); 
     ps.setString(10, user.getPhno()); 
     ps.setString(11, user.getCradio()); 
     ps.setInt(12, user.getId()); //parameter 12 added 
     ps.execute();   
     }catch(Exception e){ 
      e.printStackTrace();    
    } 

정말로 ID 필드도 업데이트 하시겠습니까?