The Oracle driver supports retrieving the values of auto-generated keys. An auto-generated key returned by the Oracle driver is the value of a ROWID pseudo column.

An application can return values of auto-generated keys when it executes an Insert statement. How you return these values depends on whether you are using an Insert statement with a Statement object or with a PreparedStatement object, as outlined in the following scenarios:

  • When using an Insert statement with a Statement object, the driver supports the following form of the Statement.execute and Statement.executeUpdate methods to instruct the driver to return values of auto-generated keys:
    • Statement.execute(String sql, int autoGeneratedKeys)
    • Statement.execute(String sql, int[] columnIndexes)
    • Statement.execute(String sql, String[] columnNames)
    • Statement.executeUpdate(String sql, int autoGeneratedKeys)
    • Statement.executeUpdate(String sql, int[] columnIndexes)
    • Statement.executeUpdate(String sql, String[] columnNames)
  • When using an Insert statement with a PreparedStatement object, the driver supports the following form of the Connection.prepareStatement method to instruct the driver to return values of auto-generated keys:
    • Connection.prepareStatement(String sql, int autoGeneratedKeys)
    • Connection.prepareStatement(String sql, int[] columnIndexes)
    • Connection.prepareStatement(String sql, String[] columnNames)
    Note: When returning auto-generated keys, using column names provides better performance than using column indexes.

    An application can retrieve values of auto-generated keys using the Statement.getGeneratedKeys() method. This method returns a ResultSet object with a column for each auto-generated key.

    Refer to "Designing JDBC applications for performance optimization" for information about how auto-generated keys can improve performance.

See also

Refer to Designing JDBC applications for performance optimization in the Progress DataDirect for JDBC Drivers Reference for more information about using prepared statement pooling to optimize performance.