如何重复使用ArrayDescriptor?

5

我尝试了下面的代码:

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 ); 
    }

}

这段代码出现了以下错误:

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

怎样解决这个问题呢?

2个回答

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); 
    }
}

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

0

new ARRAY 必须使用与相同连接的 ArrayDescriptor 进行调用。因此,您尝试的操作将无法正常工作。请注意,每个连接都有一个描述符缓存,因此创建描述符将仅在每个连接上发生一次。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接