2011-12-10 4 views
-2
를 작동하지

가능한 중복 :
How to get the insert ID in JDBC?자바 마지막 삽입 ID는

내가 마지막으로 삽입 된 ID를 얻으려고 노력했지만, 분명히 작동하지 않습니다, 그것은주는 계속 나 그 중 하나가 오류입니다.

java.sql.SQLException: Can not issue SELECT via executeUpdate(). 

마지막으로 삽입하려고했으나 작동하지 않았습니다. 오크, 여기에 내 코드

public int getLastInsertID(){ 
     try{ 
     Statement statement = conn.createStatement(); 
     ResultSet rs = null; 
     statement.executeUpdate("SELECT LAST_INSERTED_ID", Statement.RETURN_GENERATED_KEYS); 
     rs = statement.getGeneratedKeys(); 
     while(rs.next()){ 
      System.out.println(""+rs.getInt(1)); 
      id = rs.getInt(1); 
      JOptionPane.showMessageDialog(null,id); 

     } 

     }catch(Exception e){ 
      e.printStackTrace(); 
     } 

     return id; 
    } 
} 

이고 두 번째는

public void addEmployee(Personal p ,Contact c,Employee e) { 
     Statement statement = null; 

     String insert0 = "INSERT INTO `finalpayroll`.`users` (`emp_id`, `emp_pass`) VALUES ('2010-010122', '1231922')"; 
     try{ 
      statement = conn.createStatement(); 
      statement.executeUpdate(insert0); 
      statement.close(); 
     }catch(Exception ex){ 
      ex.printStackTrace(); 
     } 
     id = getLastInsertID(); 

     String insert1 = "INSERT INTO personal_info (`idpersonal_info`,`First_Name`, `Middle_Initial`, `Last_Name`, `Date_Of_Birth`, `Marital_Status`, `Beneficiaries`) VALUES ("+id+",'"+p.getFirstName()+"', '"+p.getMiddleInitial()+"'" + 
       "  , '"+p.getLastName()+"', '"+p.getDateOfBirth()+"', '"+p.getMaritalStatus()+"', '"+p.getBeneficiaries()+"')"; 
     try{ 
      statement = conn.createStatement(); 

     statement.executeUpdate(insert1); 
     statement.close(); 
     conn.close(); 
     JOptionPane.showMessageDialog(null, "Employee Added!!"); 
     }catch(Exception ex){ 
      ex.printStackTrace(); 
     } 


    } 

가 어떻게 마지막으로 삽입 된 ID를 얻을 수있다? 내 방법은 뭐가 잘못 됐어?

+0

@ BalusC 그들은 완전히 다릅니다. 왜 코드가 작동하지 않는지 묻는 것입니다. – user962206

답변

0

mysql 드라이버의 특정 버전에서 버그가있는 것처럼 보입니다. 오류 메시지에 대한 this 소스 코드를 검색하십시오. 그들은 getGeneratedIds 조건을 검사하지 않습니다.

MySQL은 2005 년부터 bug과 비슷한 '해결되지 않을 것입니다'라는 문구를 가지고 있습니다. JDBC API에서 드라이버가이 기능을 지원하는 것은 아닙니다. 이것은 알려진 문제가 아닌 것으로 보입니다.