代码之家  ›  专栏  ›  技术社区  ›  Joel

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

  •  2
  • Joel  · 技术社区  · 14 年前

    我需要在查询运行后获取生成的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 回复  |  直到 14 年前
        1
  •  1
  •   Michael    14 年前