2013-11-21 130 views
2

我有列的表ID,姓名,地址,城市,州,邮编。这里ID是插入新纪录这样的时候自动生成:insert into table1(name,address,city,state,zip) values(?,?,?,?,?)插入新记录时,如何从数据库中自动生成的值?

这里是我的代码:

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

preparedstatement.executeUpdate(); 

现在我想知道什么是自动生成的id值。我怎样才能做到这一点?

回答

6

创建一个额外的标志Statement.RETURN_GENERATED_KEYS准备好的声明,并利用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(); 
//.... 

相关:PreparedStatement with Statement.RETURN_GENERATED_KEYS

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); 

而且执行更新后,

ResultSet rs = preparedstatement.getGeneratedKeys(); 

试试这个。

+0

是得到的值id这唯一的出路?没有任何功能反应插入记录时? – user2848031

相关问题