一般是数据库中 Id 列是自动增长,比如MySQL 和 SQLServer 的主键,以及使用默认值的字段
先看代码
pstat = con.prepareStatement(insertSQ, Statement.RETURN_GENERATED_KEYS); // 这句的参数是关键
// 这里是其他的一些SQL参数
if (pstat.executeUpdate() == 1) {
rs = pstat.getGeneratedKeys(); // 用来获得生成的数值
if (rs.next()) {
long newId = Long.parseLong(rs.getString(1)); // 拿到数值
}
}
提示:
JDBC3.0是1个jar,2.0是3个jar
在3.0里面的URL和Driver是这样写的
jdbc:sqlserver://localhost com.microsoft.sqlserver.jdbc.SQLServerDriver
请注意看,和2.0的区别
jdbc:microsoft:sqlserver://localhost
com.microsoft.jdbc.sqlserver.SQLServerDriver
RETURN_GENERATED_KEYS
static final int RETURN_GENERATED_KEYS
该常量指示生成的键应该可用于获取。
getGeneratedKeys
ResultSet getGeneratedKeys() throws SQLException
获取由于执行此 Statement 对象而创建的所有自动生成的键。如果此 Statement 对象没有生成任何键,则返回空的 ResultSet 对象。
注:如果未指定表示自动生成键的列,则 JDBC 驱动程序实现将确定最能表示自动生成键的列。
返回:
包含通过执行此 Statement 对象自动生成的键的 ResultSet 对象
抛出:
SQLException - 如果发生数据库访问错误,或者在已关闭的 Statement 上调用此方法
SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
从以下版本开始:
1.4