我尝试了以下代码:
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:缺少描述符 在oracle.sql.DatumWithConnection.assertNotNull(DatumWithConnection.java:103)
如何解决这个问题?
答案 0 :(得分: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
。
答案 1 :(得分:0)
new ARRAY
。所以你要做的事情是行不通的。请注意,每个连接都有一个描述符缓存,因此每个连接只创建一次描述符。