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

3

我有一个包含名为'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个回答

1
你尝试过使用statement.getGeneratedKeys().getInt(1)吗?结果集是基于1的。

啊,你还有第二个问题,请看这里:https://dev59.com/o3I95IYBdhLWcg3w2h56 - Michael
在调用.getInt(1)之前,必须在结果集上调用.next()。太棒了,谢谢Michael。 - Joel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接