Oracle12c,JDBC,identity和getGeneratedKeys

时间:2017-03-02 21:57:15

标签: jdbc oracle12c

我正在尝试做一些适用于我曾经使用过的每个数据库的东西。我想从插入中获取生成的键。我有oracle 12c设置并有下表:

CREATE TABLE countyUsers (id integer GENERATED AS IDENTITY,first varchar(255),last varchar(255),email varchar(255),userName varchar(255),unisonFailedLogins number,unisonLastFailedLogin number,unisonLastSuccessLogin number);

然后我运行一个插件并尝试使用jdbc瘦驱动程序获取生成的密钥:

ps.executeUpdate();
ResultSet rs = ps.getGeneratedKeys();
if (rs.next()) {
  long id = rs.getLong(1);
}

抛出数字格式异常。我可以得到一个rowid。回来的密钥是AAAWyHAAGAAAAFNAAA而不是数字。我该怎么办呢?

由于

1 个答案:

答案 0 :(得分:0)

有同样的问题,解决方法是告诉Oracle返回哪一列:

String[] generatedKeyColumns = new String[]{"id"};
PreparedStatement ps = connection.prepareStatement(insertStatement, generatedKeyColumns);