gpt4 book ai didi

java - 如何修复已弃用的 oracle.sql.ArrayDescriptor、oracle.sql.STRUCT 和 oracle.sql.StructDescriptor

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:53 32 4
gpt4 key购买 nike

我使用下面的 JDBC 代码调用一个接受数组输入的 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();

最佳答案

感谢 UUIUI,我现在删除了已弃用的类,如果以后有人需要,修复后的代码如下所示。

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

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

struct[arrayIndex++] = connection.createStruct("R_REPORT_OBJECT", reportArray);
}

Array reportsArray = ((OracleConnection) connection).createOracleArray("T_REPORT_TABLE", struct);
callableStatement.setArray("T_REPORT_IN", reportsArray);

callableStatement.executeUpdate();

关于java - 如何修复已弃用的 oracle.sql.ArrayDescriptor、oracle.sql.STRUCT 和 oracle.sql.StructDescriptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33347134/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com