当前位置: 首页 > 面试题库 >

如何修复不建议使用的oracle.sql.ArrayDescriptor,oracle.sql.STRUCT和oracle.sql.StructDescriptor

杭令
2023-03-14
问题内容

我使用下面的JDBC代码来调用需要Array输入的Oracle存储过程。

但是不建议使用以下三个类。如何替换呢?

import oracle.sql.ArrayDescriptor;
import oracle.sql.STRUCT;
import oracle.sql.StructDescriptor;

Java代码

        Object[] reportArray = new Object[3]; 
        STRUCT[] struct = new STRUCT[reports.size()];

        ArrayDescriptor arrayDescriptor = new ArrayDescriptor(new SQLName("T_REPORT_TABLE", (OracleConnection) connection), connection);
        StructDescriptor structDescriptor = StructDescriptor.createDescriptor("R_REPORT_OBJECT", connection);

        int arrayIndex = 0;
        for (Report data : reports) {
            reportArray[0] = data.getXXX();
            reportArray[1] = data.getYYY();
            reportArray[2] = data.getZZZ();

            struct[arrayIndex++] = new STRUCT(structDescriptor, connection, reportArray);
        }

        oracle.sql.ARRAY reportsArray = new oracle.sql.ARRAY(arrayDescriptor, connection, struct);
        callableStatement.setArray("T_REPORT_IN", reportsArray);

        callableStatement.executeUpdate();

问题答案:

来自oracle API文档。

数组描述符

使用工厂方法OracleConnection.createOracleArray直接创建java.sql.Array的实例。

结构

使用java.sql.Struct接口进行声明,而不要使用具体的类oracle.sql.STRUCT。

结构描述符

使用工厂方法Connection.createStruct直接创建java.sql.Struct的实例。

这是oracle
API文档中提到的不赞成使用的类的完整列表。



 类似资料:
  • 问题内容: 控制器逻辑: 服务逻辑 怎么了 在90%的情况下,这将正常工作。 问题 我已经阅读了相关问题,并找到了上面看到的电话。它解决了大约50%的案件,但不是全部。 问题答案: 对于我们来说,一些不同的方法最终解决了StaleObjectException定期发生的问题: 检索对象后刷新对象解决了我们的大多数StaleObjectExceptions。尤其是在某人可能会从其他地方处理同一对象并

  • 下面列出一些 Discuz! 应用常见的代码并给出相关的修改建议。 变量作用域问题 文件 myaddon.inc.php,该文件加密: <?php if(! defined ('IN_DISCUZ')) { exit ('Access Denied'); } $data = C::t('#myaddon#mytable')->fetch_my_d

  • 这是我的logcat com.contoh.jalikk.tumbal.search.adapter.NotifyDataSetChanged()'在com.contoh.jalikk.tumbal.semuadata$1的空对象引用上。onresponse(semuadata.java:178)在com.contoh.jalikk.tumbal.semuadata$1的onresponse(se

  • 问题内容: 我有这种方法: 不幸的是,编译器向我显示了以下问题: 因为已弃用。 不使用该如何改写此方法? 问题答案: 您可以用和替换它(您需要使用兼容性包来支持API版本11之前的设备)。 但是,您似乎只使用了一次查询:您甚至可能不需要它。也许这行得通吗?

  • 如何修复背景图像与滚动视图时windowSoftInputMode出现。我使用windowSoftInputMode="调整潘",但滚动视图不完全工作,请帮助我。当虚拟键盘出现时,最后一个字段不会出现。我希望背景图像不应该用虚拟键盘向上滚动,滚动视图应该在滚动时显示其中的所有字段。 这是我的密码

  • 问题内容: 我用soket.io安装了nodejs。想要将此代码测试到服务器节点server.js 和client.js 但是当我执行node server.js提示时出现此错误 node_modules \ socket.io-parser \ node_modules \ component-emitter \ index.js:134:20) les \ socket.io-parser \