Java:MySQL查询。获取生成的ID

时间:2010-07-13 06:24:38

标签: java mysql jdbc

我有一个表,其中包含一个名为'id'的列,该列是一个自动递增并设置为主键的INT。

我需要在运行查询后获取生成的ID的值。我有以下内容:

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

我在最后一行代码中得到以下异常:

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)

如果我将其更改为statement.getGeneratedKeys().getInt(0);,我会收到以下信息:

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)

我已经完成了其他方法,并尝试了这个和那个。我查看了在互联网上找到的示例代码。我只是看不出我做错了什么。

注意:查询在我包含的两个解决方案中运行。所以连接工作正常。它正在取回无效ID的值。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用statement.getGeneratedKeys()。getInt(1)?结果集基于一个。