Jak napisać java.sql.Array do java.sql.SQLOutput w SQLData.writeSQL () dla Oracle
Wdrożyłemjava.sql.SQLData
w celu powiązania obiektów UDT z przygotowanymi instrukcjami za pomocą ojdbc6. Teraz niektóre z moich UDT zawierają tablice. Teraz muszę to zrobić:
class MyType implements SQLData {
public void writeSQL(SQLOutput stream) throws SQLException {
Array array = //...
stream.writeArray(array);
}
}
Aby zbudować tablice Oracle, potrzebuję połączenia JDBC. Zazwyczaj odbywa się to w następujący sposób:
OracleConnection conn = // ...
Array array = conn.createARRAY("MY_ARRAY_TYPE", new Integer[] { 1, 2, 3 });
Jednak w tymwriteSQL(SQLOutput)
metoda, nie mam połączenia. Ponadto z powodów, które trudno wyjaśnić w zwięzłym pytaniu, nie mogę utrzymać odniesienia do połączenia wMyType
. Czy mogę jakoś wydobyć to połączenieSQLOutput
? Chciałbym uniknąć używania niestabilnych konstrukcji takich jak ta:
// In ojdbc6, I have observed a private "conn" member in OracleSQLOutput:
Field field = stream.getClass().getDeclaredField("conn");
field.setAccessible(true);
OracleConnection conn = (OracleConnection) field.get(stream);
Jakieś pomysły? Alternatywy?