在mysql中获取最后插入的自动增量ID

时间:2013-01-05 09:58:42

标签: java mysql

我正在尝试获取类似mysql_insert_id()的mysql命令;它检索最后插入的行的auto_increment id。我该怎么做才能在Java中获取它?

rs = st.executeQuery("select last_insert_id() from schedule");
lastid = rs.getString("last_insert_id()");

我的lastid被宣布为INT。我不知道在rs.get中使用什么以及参数..

6 个答案:

答案 0 :(得分:26)

使用JDBC,您可以使用 Connection.PreparedStatement(query, int) 方法。

PreparedStatement pstmt = conn.prepareStatement(Query, Statement.RETURN_GENERATED_KEYS);  
pstmt.executeUpdate();  
ResultSet keys = pstmt.getGeneratedKeys();    
keys.next();  
key = keys.getInt(1);

答案 1 :(得分:25)

尝试使用别名

rs = st.executeQuery("select last_insert_id() as last_id from schedule");
lastid = rs.getString("last_id");

答案 2 :(得分:7)

请参阅this帖子以获取答案&解释

Statement stmt = db.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
numero = stmt.executeUpdate();

ResultSet rs = stmt.getGeneratedKeys();
if (rs.next()){
    risultato=rs.getInt(1);
}

答案 3 :(得分:3)

为什么不

SELECT MAX(id) FROM schedule

如果您的列的ID与id的名称不同,则需要在上述查询中相应地替换它。

您可以像以下一样使用它:

rs = st.executeQuery("SELECT MAX(id) AS id FROM schedule");
int lastid = rs.getInt("id");

答案 4 :(得分:0)

您可以使用以下查询来获取上次插入行的最后一次auto_incremented ID。

SELECT (max(auto_incr_id)) from table_name;

答案 5 :(得分:0)

另一个选择:

SELECT id FROM table_name ORDER BY id DESC LIMIT 1;