2013-02-07 2 views
1

나는 auto-generate-key로 정의 된 하나의 컬럼을 가진 테이블을 가지고있다. 다음 코드를 실행하면 새 키가 생성 될 것으로 예상되지만 그렇지 않습니다. 한 행이 삽입되었지만 ps.getGeneratedKeys()의 ResultSet은 비어 있습니다.getGeneratedKeys()가 INSERT 다음에 결과를 반환하지 않는 이유는 무엇입니까?

DB2 : SQLLIB_ADCL_V97FP1을 사용 중입니다.

 conn = getConnection(); 
     conn.setAutoCommit(false); 
     String query = 
      "INSERT INTO MyTable " + 
      " (messe_nr, land5, variable_nr, bezeichnung_en, bezeichnung_de) " + 
      "VALUES (?,?,?,?,?)"; 

     PreparedStatement ps = conn.prepareStatement(query, Statement.RETURN_GENERATED_KEYS); 
     ps.setInt(1, fair.getFairId()); 
     ps.setString(2, variable.getCountryCode()); 
     ps.setInt(3, variable.getSort()); 
     ps.setString(4, variable.getLabel_en()); 
     ps.setString(5, variable.getLabel_de()); 

     log.debug(query); 
     int count = ps.executeUpdate(); 
     if(count == 1) { 
      ResultSet rs = ps.getGeneratedKeys(); 
      if(rs.next()) { 
       variable.setId(rs.getBigDecimal(1).intValue()); 
      } else { 
       log.error("Could not get autogen key after variable insert"); 
       throw new AVMSException(1500); 
      } 
      rs.close(); 
     } 
     log.debug("inserted " + count); 

     ps.close(); 
     conn.commit(); 

UPDATE는

난 그냥 테스트 서버에 프로젝트를 배포하고 문제가 발생하지 않습니다. 내 개발 시스템에 문제가 생겼다. 그러나 무엇? 1.7.0_13의 Java 업데이트를 설치했는데 이런 문제가 발생할 수 있습니다. - /?

+0

은 당신이'CREATE' 문을 공유 할 수' – Bulat

+1

@Bulat을 MyTable' - 나는에 직접 액세스 할 수없는 ** CREATE ** . 나는 VARIABLE_ID가 자동으로 생성 된 키라는 것을 확인한 관리자들에게 확인했다. – paul

+0

값이 실제로 생성되고 있는지 확인할 수 있습니까? 또한 getGeneratedKeys() 필드의 이름을 전달할 수 있고 그 경우에 무슨 일이 일어나는 지 확인할 수있을 것 같아요. – Bulat

답변

2

이 시도주고, 나를 위해 노력하고 있습니다 :

prepStmt = con.prepareStatement(sql, new String[]{"YOUR_ID_FIELD"}); 

//Setting Bind-Variables 

prepStmt.executeUpdate(); 

     rs = prepStmt.getGeneratedKeys(); 
     while (rs.next() == true) 
     { 
      tAdresse.getAdressid().setValue(rs.getInt(1)); 
      System.out.println("Key: " + tAdresse.getAdressid().getIntValue()); 
     } 
+0

! 이전에 귀하의 게시물을 발견했으면 좋겠어요. 그냥 똑같은 해결책을 찾았고 나에게도 효과가있다. – paul

관련 문제