2010-07-13 4 views
2

'ID'라는 열이 포함 된 테이블이 있습니다.이 열은 자동으로 증가하고 기본 키로 설정된 INT입니다.자바 : MySQL 쿼리. 생성 된 ID 가져 오기

쿼리를 실행 한 후 생성 된 ID의 값을 가져와야합니다. 나는 다음과 같습니다

String sql = "INSERT..."; 
Statement statement = sqlConnection.createStatement(); 
    int result = statement.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS); 
    this.id = statement.getGeneratedKeys().getInt("id"); 

I 얻을 코드의 마지막 줄에 다음과 같은 예외 :

javax.servlet.ServletException: java.sql.SQLException: Before start of result set 
    com.joelj.music.rest.NewUser.doPost(NewUser.java:44) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
    com.joelj.music.rest.filters.Prefilter.doFilter(Prefilter.java:44) 

I : 내가 statement.getGeneratedKeys().getInt(0);로 변경하는 경우

javax.servlet.ServletException: java.sql.SQLException: Column 'id' not found. 
    com.joelj.music.rest.NewUser.doPost(NewUser.java:44) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:847) 
    com.joelj.music.rest.filters.Prefilter.doFilter(Prefilter.java:44) 

나는 다음을 얻을 다른 방법을 시도해보고 이것을 시도했습니다. 인터넷에서 찾은 예제 코드를 살펴 보았습니다. 나는 내가 뭘 잘못하고 있는지 알 수 없다.

참고 : 쿼리는 내가 포함 된 두 가지 솔루션 모두에서 실행됩니다. 그래서 연결이 잘 작동합니다. 그것은 작동하지 않는 ID의 가치를 되찾고 있습니다.

도움 주셔서 감사합니다.

답변

1

statement.getGeneratedKeys(). getInt (1)를 사용해 보셨습니까? 결과 집합은 하나의 기반입니다.

+0

그래도 작동하지 않습니다. 나에게 0을 사용하는 것과 같은 예외가 생겼다. – Joel

+0

아, 두 번째 문제가있다. 이것을 체크해라. http://stackoverflow.com/questions/2120255/java-resultset-exception-before-start-of-result-set – Michael

+0

은'.getInt (1)'을 호출하기 전에 결과 집합에서'.next()'를 호출해야했습니다. 굉장해. 고마워요 마이클 – Joel

관련 문제