除了用存储过程还有以下方法可以获取:
static int create() throws SQLException {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 2.建立连接
conn = JdbcUtils.getConnection();
// conn = JdbcUtilsSing.getInstance().getConnection();
// 3.创建语句
String sql = "insert into user(name,birthday, money) values ('name2 gk', '1987-01-01', 400) ";
ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);//参数2最好写上,虽然Mysql不写也能获取但是不代表别的数据库可以做到
ps.executeUpdate();
rs = ps.getGeneratedKeys();
int id = 0;
if (rs.next())
id = rs.getInt(1);
return id;
} finally {
JdbcUtils.free(rs, ps, conn);
}
}
getGeneratedKeys
ResultSet getGeneratedKeys() throws SQLException
- 获取由于执行此
Statement
对象而创建的所有自动生成的键。如果此Statement
对象没有生成任何键,则返回空的ResultSet
对象。注:如果未指定表示自动生成键的列,则 JDBC 驱动程序实现将确定最能表示自动生成键的列。
- 返回:
- 包含通过执行此
Statement
对象自动生成的键的ResultSet
对象 - 抛出:
SQLException
- 如果发生数据库访问错误,或者在已关闭的Statement
上调用此方法SQLFeatureNotSupportedException
- 如果 JDBC 驱动程序不支持此方法- 从以下版本开始:
- 1.4