我正在尝试使用此问题中提到的方法(尽管我使用的是 Oracle 10g)来检索 JSP 中最后生成的自动增量 ID,例如 PHPmysql_insert_id()
函数或 MySQLlast_insert_id()
函数。getGeneratedKeys()
我TRANSPORTER
在 Oracle 数据库中有一个表,它有一个名为TRANSPORTER_ID
type的列,NUMBER(35, 0)
它映射到BigDecimal
Java 中的一个类型,它是一个序列生成的主键。
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();
在前面的while
循环上方调用此方法,但失败并出现以下异常。
javax.servlet.ServletException:java.sql.SQLException:不允许操作
我已经尝试过Oracle JDBC Driver version - 10.2.0.5.0
,当它失败时,我下载了更高版本,11.2.0.3.0
但无济于事。可能是什么原因?