java - 插入新记录时如何从数据库获取自动生成的值?

标签 java jdbc

我有一个包含列id、名称、地址、城市、州、邮政编码的表格。这里id是在插入新记录时自动生成的,如下所示:insert into table1(name,address,city,state,zip)values(?,?,?,?,?).

这是我的代码:

preparedstatement.setString(1,name);
preparedstatement.setString(2,address);
preparedstatement.setString(3,city);
preparedstatement.setString(4,state);
preparedstatement.setString(5,zip);

preparedstatement.executeUpdate();

现在我想知道自动生成的id值是什么。我怎样才能做到这一点?

最佳答案

使用附加标志 Statement.RETURN_GENERATED_KEYS 创建准备好的语句并使用 PreparedStatement.getGeneratedKeys() :

String sql = "insert into table1(name,address,city,state,zip) values(?,?,?,?,?)";
PreparedStatement preparedstatement
= con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

//....

preparedstatement.setString(1,name);
preparedstatement.setString(2,address);
preparedstatement.setString(3,city);
preparedstatement.setString(4,state);
preparedstatement.setString(5,zip);

preparedstatement.executeUpdate();

ResultSet generatedKeys = preparedstatement.getGeneratedKeys();
//....

相关:PreparedStatement with Statement.RETURN_GENERATED_KEYS

关于java - 插入新记录时如何从数据库获取自动生成的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20134113/

相关文章:

java - 使用 ServletOutputStream 高效发送大量数据

java - 删除用于简单字母表的 ascii

java - 将 jdbc 驱动程序添加到类路径

java - 如何解决 "Stored procedure ' MySP 1' may be run only in unchained transaction mode"错误?

java - 将Java连接到MySQL数据库

java - 在 Android 中检查特定字符串是否有多个startsWith前缀

java - 无法从 IDEA 13.0 IDE 为导入的 gradle 项目运行 Junit 测试

java - 上传到表之前检查条件

java - 使用 JDBC 时出错 "java.lang.NullPointerException"

java - 包级别的方法