【发布时间】:2012-10-29 00:40:18
【问题描述】:
我正在尝试使用 getGeneratedKeys() 中提到的 getGeneratedKeys() 方法在 JSP 中检索最后生成的自动增量 ID,例如 PHP mysql_insert_id() 函数或 MySQL last_insert_id() 函数question(我是不过使用 Oracle 10g)。
我在 Oracle 数据库中有一个 TRANSPORTER 表,其中有一个名为 TRANSPORTER_ID 类型为 NUMBER(35, 0) 的列,它映射到 Java 中的 BigDecimal 类型,它是一个序列生成的主键。
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);
执行插入操作后,代码尝试在前面的while循环之上调用此方法rs = ps.getGeneratedKeys();,但失败并出现以下异常。
javax.servlet.ServletException: java.sql.SQLException: 操作不 允许
我尝试过使用Oracle JDBC Driver version - 10.2.0.5.0,但失败后我下载了更高版本的11.2.0.3.0,但无济于事。可能是什么原因?
【问题讨论】:
标签: java oracle jdbc oracle10g