2

I have table with columns id, name, address, city, state, zip. Here id is auto generated when inserting new record like this: insert into table1(name,address,city,state,zip) values(?,?,?,?,?).

Here's my code:

preparedstatement.setString(1,name);
preparedstatement.setString(2,address);
preparedstatement.setString(3,city);
preparedstatement.setString(4,state);
preparedstatement.setString(5,zip);

preparedstatement.executeUpdate();

Now I want to know what is the id value which was generated automatically. How can I do this?

informatik01
  • 15,636
  • 10
  • 72
  • 102
user2848031
  • 151
  • 11
  • 34
  • 66

2 Answers2

6

Create the prepared statement with the additional flag Statement.RETURN_GENERATED_KEYS and make use of PreparedStatement.getGeneratedKeys():

String sql = "insert into table1(name,address,city,state,zip) values(?,?,?,?,?)";
PreparedStatement preparedstatement
= con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

//....

preparedstatement.setString(1,name);
preparedstatement.setString(2,address);
preparedstatement.setString(3,city);
preparedstatement.setString(4,state);
preparedstatement.setString(5,zip);

preparedstatement.executeUpdate();

ResultSet generatedKeys = preparedstatement.getGeneratedKeys();
//....

Related: PreparedStatement with Statement.RETURN_GENERATED_KEYS

Community
  • 1
  • 1
Sam
  • 7,688
  • 1
  • 21
  • 47
3
String query = <your query>;

PreparedStatement preparedstatement= 
       con.prepareStatement(query ,Statement.RETURN_GENERATED_KEYS)

preparedstatement.setString(1,name);
preparedstatement.setString(2,address);
preparedstatement.setString(3,city);
preparedstatement.setString(4,state);
preparedstatement.setString(5,zip);

And after the execute update ,

ResultSet rs = preparedstatement.getGeneratedKeys();

Try this.

Adarsh
  • 3,513
  • 2
  • 19
  • 36