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

Mak*_*i92 15 java mysql

我试图获取mysql命令,如mysql_insert_id(); 它检索最后插入的行的auto_increment id.我能用Java做些什么呢?

rs = st.executeQuery("select last_insert_id() from schedule");
lastid = rs.getString("last_insert_id()");
Run Code Online (Sandbox Code Playgroud)

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

Per*_*ror 27

使用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);
Run Code Online (Sandbox Code Playgroud)

  • 我试过这个方法,但它总是返回1.我不知何故认为这是用于检查它是否将任何查询插入数据库? (2认同)
  • @ Maki92我真的不明白你的评论.这段代码只返回表中的最后一个auto-increment_id.BTW,ASAIK这是使用JDBC的标准方式. (2认同)
  • 我有确切的问题.无论真实指数是什么,它总是返回1. (2认同)

jue*_*n d 25

尝试使用别名

rs = st.executeQuery("select last_insert_id() as last_id from schedule");
lastid = rs.getString("last_id");
Run Code Online (Sandbox Code Playgroud)

  • 而不是rs.getString("last_id"),你可以调用rs.getString(1). (3认同)

小智 7

看到这篇文章的答案和解释

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

ResultSet rs = stmt.getGeneratedKeys();
if (rs.next()){
    risultato=rs.getInt(1);
}
Run Code Online (Sandbox Code Playgroud)