使用JDBC检索Oracle中最后插入的ID

问题描述 投票:4回答:2

我正在尝试使用此mysql_insert_id()中提到的mysql_insert_id()方法来检索JSP中最后生成的自动增量ID,例如PHP last_insert_id()函数或MySQL last_insert_id()函数。不过是Oracle 10g)。

我在Oracle数据库中有一个getGeneratedKeys()表,该表具有名为getGeneratedKeys()类型的question列,该列在Java中映射为TRANSPORTER类型,并且它是序列生成的主键。

TRANSPORTER_ID

执行插入操作后,代码尝试在先前的NUMBER(35, 0)循环上方调用此方法BigDecimal,但失败,但出现以下异常。

javax.servlet.ServletException:java.sql.SQLException:操作不允许

我已经尝试过使用Connection con; ResultSet rs; PreparedStatement ps; String url = "jdbc:oracle:thin:@localhost:1521:xe"; String user = "root"; String pwd = "root"; Class.forName("oracle.jdbc.OracleDriver").newInstance(); con = DriverManager.getConnection(url, user, pwd); ps = con.prepareStatement("INSERT INTO transporter(transporter_name, transporter_website)VALUES(?, ?)"); ps.setString(1, "New"); ps.setString(2, "New Website"); ps.executeUpdate(); BigDecimal id = new BigDecimal(0); rs = ps.getGeneratedKeys(); while (rs.next()) { id = rs.getBigDecimal("transporter_id"); } out.println("The generated id is : " + id); ,但是当它失败时,我下载了一个更高的版本rs = ps.getGeneratedKeys();,但无济于事。可能是什么原因?

java oracle jdbc oracle10g
2个回答
5
投票
© www.soinside.com 2019 - 2024. All rights reserved.