通常,
您将使用
Statement#getGeneratedKeys()此方法,但是到目前为止(仍然)Oracle
JDBC驱动程序不支持此方法。
最好的办法是 要么
化妆使用的
CallableStatement一个
RETURNING条款:
String sql = "BEGIN INSERT INTO mytable(id, content) VALUES (seq_mytable.NEXTVAL(), ?) RETURNING id INTO ?; END;";Connection connection = null;CallableStatement statement = null;try { connection = database.getConnection(); statement = connection.prepareCall(sql); statement.setString(1, "test"); statement.registerOutParameter(2, Types.NUMERIC); statement.execute(); int id = statement.getInt(2); // ...或 在同一笔交易
SELECt sequencename.CURRVAL后开火
INSERT:
String sql_insert = "INSERT INTO mytable(content) VALUES (?)";String sql_currval = "SELECT seq_mytable.CURRVAL FROM dual";Connection connection = null;PreparedStatement statement = null;Statement currvalStatement = null;ResultSet currvalResultSet = null;try { connection = database.getConnection(); connection.setAutoCommit(false); statement = connection.prepareStatement(sql_insert); statement.setString(1, "test"); statement.executeUpdate(); currvalStatement = connection.createStatement(); currvalResultSet = currvalStatement.executeQuery(sql_currval); if (currvalResultSet.next()) { int id = currvalResultSet.getInt(1); } connection.commit(); // ...


