Tin*_*iny 4 java oracle jdbc oracle10g
我正在尝试使用此问题中提到的方法(我使用的是Oracle 10g)检索JSP中最后生成的自动增量ID,例如PHP mysql_insert_id()函数或MySQL last_insert_id()函数.getGeneratedKeys()
我TRANSPORTER在Oracle数据库中有一个表,它有一个名为TRANSPORTER_IDtype 的列,NUMBER(35, 0)它映射到BigDecimalJava中的类型,它是一个序列生成的主键.
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);
Run Code Online (Sandbox Code Playgroud)
执行插入操作后,代码尝试rs = ps.getGeneratedKeys();在前一个while循环之上调用此方法,并且失败并出现以下异常.
javax.servlet.ServletException:java.sql.SQLException:不允许操作
我已经尝试了Oracle JDBC Driver version - 10.2.0.5.0,当它失败时,我下载了更高版本,11.2.0.3.0但无济于事.可能是什么原因?
我找到了一些关于此的文档.这是11克,但10克的情况可能不会更好.
您的错误的近因可能是以下限制:
您需要仅按位置访问从getGeneratedKeys方法返回的ResultSet对象
似乎Oracle驱动程序还要求您识别键列,以便它检索键列而不仅仅是ROWID.此示例代码包含在链接文档中.
| 归档时间: |
|
| 查看次数: |
5073 次 |
| 最近记录: |