概述:需要从 Oracle 视图中读取行并创建一个 Notes 文档,保存文档,然后将 Document Unique ID 写回 Oracle。
我能够读取连接并读取数据没有问题。我正在使用连接到 Oracle 11 数据库的类型 4 连接。Oracle 视图设置为允许更新。该视图中没有此处概述的内容:在 Oracle 中,是否可以通过视图插入或更新记录?
*使用相同的用户名和密码,您可以通过输入SQL语句成功更新视图。
*尝试使用 conn.setAutoCommit(false); 这没有效果。
*验证结果集是可更新的(1008)
*用户已获得完全 DBA 访问权限(临时)
*我已经尝试了createStatement方法中第一个参数的所有可能组合
...
Statement statement = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
ResultSet rs = statement.executeQuery(fetch);
...
String UNID = doc.getUniversalID(); //gets unique id from saved Notes Document
System.out.println("This is what to write to Oracle:" + UNID);
System.out.println("is updatable=1008, not updatable=1007 value is:" + rs.getConcurrency());
System.out.println("is Result Set Closed:" + rs.isClosed());
rs.updateString("NOTES_DOC_ID", UNID);
System.out.println("got past updating NOTES_DOC_ID column");
rs.updateRow(); //fails here
这是来自控制台的错误:
这是写给 Oracle 的内容:BF8091259610C61B87257B16005C14FB
可更新=1008,不可更新=1007 值为:1008
结果集是否已关闭:false
过去更新 NOTES_DOC_ID 列
java.security.AccessControlException:访问被拒绝(java.lang.RuntimePermission exitVM.0)
在要求用户拥有 DBA 访问权限之前,我会得到一个
java.sql.SQLSyntaxErrorException: ORA-01031: 权限不足
我认为这是一个很大的线索。我的 DBA 不知道给我什么进一步的访问权限。
DBA 希望我开始使用 ref 游标,这很好,但我怀疑 JDBC 访问的某种安全设置让我感到困惑,我想先探索一下。如果存在安全问题,那么我认为改变读取行的方式不会产生影响。大多数有关如何执行此操作的文档均来自 Oracle 的网站以及此站点。