我有一个表,其中包含一个名为'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的值。
感谢您的帮助。
答案 0 :(得分:1)
您是否尝试过使用statement.getGeneratedKeys()。getInt(1)?结果集基于一个。