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
  • 16,038
  • 10
  • 74
  • 104
user2848031
  • 187
  • 12
  • 36
  • 69

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,778
  • 1
  • 23
  • 49
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,613
  • 2
  • 21
  • 37