Java 如何重用ArrayDescriptor?
我尝试了下面的代码:Java 如何重用ArrayDescriptor?,java,arrays,oracle,database-connection,Java,Arrays,Oracle,Database Connection,我尝试了下面的代码: public class Abc { private ArrayDescriptor arrayDesc; void init() { connection = //create connection arrayDesc = ArrayDescriptor.createDescriptor("DBTYPE",connection); } void m1() { conn1 = //creat
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)
如何解决这个问题?已被弃用。假设您的连接
对象属于该类型,请尝试使用以下内容:
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
必须使用使用相同连接的ArrayDescriptor调用新数组。所以你想做的事行不通。请注意,每个连接都有一个描述符缓存,因此每个连接只创建一次描述符