我有一个作者表:authorID,authorName.authorID是一个自动增量的PK.
我想在java中编写一个从用户获取名称并将其添加到表中的方法.但是我需要返回作者的id.有没有办法用1 sql语句做到这一点?
例如,如果我的代码有命令:
stmt.executeUpdate("INSERT INTO authors " + "VALUES (, '"+ string.get(1) +"')");
Run Code Online (Sandbox Code Playgroud)
其中string.get(1)是作者姓名.
现在,如果我写:
ResultSet rs =stmt.executeUpdate("INSERT INTO authors " + "VALUES (, '"+ string.get(1) +"')");
Run Code Online (Sandbox Code Playgroud)
它表示错误,因为rs是结果集,但返回的值是int.这是我插入的行的pk吗?
尝试
stmt.executeUpdate("INSERT INTO authors VALUES (, '"+ string.get(1) +"')", Statement.RETURN_GENERATED_KEYS);
ResultSet rs = stmt.getGeneratedKeys();
rs.next();
long pk = rs.getLong(1);
Run Code Online (Sandbox Code Playgroud)
创建时传递Statement.RETURN_GENERATED_KEYS PreparedStatement conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
并
PreparedStatement#getGeneratedKeys()在惰性后返回自动生成的密钥.
为了获得最后插入的 id,请查看以下代码:
PreparedStatement stmnt = Conn.preparedStatement("INSERT INTO authors(col1) VALUES (?)", Statement. RETURN_GENERATED_KEYS );
stmnt.setString(col1val);
stmnt.executeUpdate();
ResultSet rs=stmnt.getGeneratedKeys();
if(rs.next()){
System.out.println(rs.getInt(1));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16265 次 |
| 最近记录: |