MYSQL Connector / J插入并获取生成的自动增量键

时间:2014-01-08 13:47:55

标签: java mysql jdbc

我可以通过Connector / J插入MySQL。但是:

res = stmt.executeUpdate(query);

什么都不返回。我如何知道新生成的行自动增量键值。 我需要引用刚生成的第一行。

3 个答案:

答案 0 :(得分:3)

您可以使用last_insert_id()或JDBC API来检索生成的密钥:

String query = "insert into ....";
PreparedStatement pstmt = connection.prepareStatement(query,  Statement.RETURN_GENERATED_KEYS);
int rowsAffected = pstmt.executeUpdate();
int newId = -1;
ResultSet rs = pstmt.getGeneratedKeys();
if (rs.next()) 
{
  newId = rs.getInt(1);
}
rs.close();
pstmt.close();

答案 1 :(得分:0)

插入后,在同一连接上,立即发出以下SQL查询:

SELECT LAST_INSERT_ID()

返回最近生成的自动增量值。它存储在每个连接的基础上,因此即使在繁忙的多客户端数据库上它也是可靠的。

http://dev.mysql.com/doc/connector-odbc/en/connector-odbc-usagenotes-functionality-last-insert-id.html

答案 2 :(得分:0)

executeUpdate会根据您的查询返回受影响的行数。 要获取最新的自动增量ID,您需要执行另一个查询。我使用了SELECT LAST_INSERT_ID();,它应该返回最新的值