2010-05-17 77 views
4

我在我的表中有一个主键自动增量属性。我想知道为使用statement.executeUpdate()插入的行分配的值。如何以最佳方式实现这一目标?SQL java获取值分配给自动增量主键

+0

为了什么数据库?你可以使用Oracle/DB2的RETURNING子句(也可能使用Postgres)。 MySQL的LAST_INSERT_ID; SQL Server的@SCOPE_IDENTITY ... – 2010-05-17 21:50:54

+0

@OMGPonies:JDBC抽象数据库实现这一点的方式(当数据库支持时)。 – 2010-05-17 21:57:42

回答

11

使用Statement#getGeneratedKeys()Statement#executeUpdate(String, int)(这是一个JDBC 3.0功能,您的数据库必须支持JDBC 3.0)。

下面是与返回在TABLE1自动生成的列值的ResultSet一个例子:

Statement stmt = conn.createStatement(); 
int rows = stmt.executeUpdate("INSERT INTO TABLE1 (C11, C12) VALUES (1,1)", Statement.RETURN_GENERATED_KEYS); 
ResultSet rs = stmt.getGeneratedKeys(); 
+0

我收到一个错误,说当我调用rs.getInt(“id”); 可能是什么原因? – 2010-05-18 04:56:43

+0

与某事有关。 http://bugs.mysql.com/bug.php?id=18409 但即使这并没有解决问题 – 2010-05-18 05:17:42

+0

我的列有一个int(11)的数据类型。我正在使用mysql – 2010-05-18 05:22:41