我有一个包含名为'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的值。感谢你的帮助。
.getInt(1)
之前,必须在结果集上调用.next()
。太棒了,谢谢Michael。 - Joel