How to get the id of last inserted row using preparedstatement?

11,161
ps.executeUpdate(ps.RETURN_GENERATED_KEYS)

You invented that. It doesn't exist.

ps = con.prepareStatement(Insert_Credential);

That doesn't tell the PreparedStatement to return generated keys either. You need this:

ps = con.prepareStatement(Insert_Credential, Statement.RETURN_GENERATED_KEYS);
Share:
11,161
Daniel Morgan
Author by

Daniel Morgan

Updated on June 14, 2022

Comments

  • Daniel Morgan
    Daniel Morgan almost 2 years

    I am using the following code to insert a new row to database, I need to get the id of the last inserted row but when I run the code it shows the following message:

    SEVERE: java.sql.SQLException: Generated keys not requested. You need to specify   
    Statement.RETURN_GENERATED_KEYS to Statement.executeUpdate() or 
    Connection.prepareStatement().
    

    When I use the following code also it gives error although I choose executeUpdate(String sql)

      ps.executeUpdate(ps.RETURN_GENERATED_KEYS);
      error >> no suitable method found for executeUpdate(int)
    

    the table is as following:

           credential 
              int         ID   primary key, auto increment
              varchar(10) name 
    

    my code

    String Insert_Credential = "Insert into credential values("
                        + "?,?)";
                ps = con.prepareStatement(Insert_Credential);
                ps.setInt(1, 0);
                ps.setString(2, "username");
                ps.executeUpdate();
                ResultSet generatedKeys = ps.getGeneratedKeys();
            if (generatedKeys.next()) {
                 System.out.println("id is"+generatedKeys.getLong(1));
                 return generatedKeys.getInt(1);
            } else {
                throw new SQLException("Creating user failed, no generated key obtained.");
            }