如何重用ArrayDescriptor?

Arp*_*wal 5 java arrays oracle database-connection

我试过下面的代码:

public class Abc {

    private ArrayDescriptor arrayDesc;

    void init() {
       connection = //create connection
        arrayDesc = ArrayDescriptor.createDescriptor("DBTYPE",connection);
    }

    void m1() {
        conn1 = //create connection
        ARRAY array_to_pass1 = new ARRAY( arrayDesc , conn1, idsArray1 ); 
    }

    void m2() {
        conn2 = //create connection
        ARRAY array_to_pass2 = new ARRAY( arrayDesc , conn2, idsArray2 ); 
    }

}
Run Code Online (Sandbox Code Playgroud)

此代码给出以下错误:

table.java.sql.SQLException:oracle.sql.DatumWithConnection.assertNotNull(DatumWithConnection.java:103)中缺少描述符

怎么解决这个问题?

Ste*_*ers 2

ArrayDescriptor已弃用。假设您的connection对象属于OracleConnection类型,请尝试使用createOracleArray代替 - 如下所示:

public class Abc {
    void init() {
        connection = //create connection
    }

    void m1() {
        conn1 = //create connection
        array array_to_pass1 = conn1.createOracleArray(arrayDesc, idsArray1); 
    }

    void m2() {
        conn2 = //create connection
        array array_to_pass2 = conn2.createOracleArray(arrayDesc, idsArray2); 
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:使用此方法,数组将是类型java.sql.Array而不是oracle.sql.ARRAY.