So schreiben Sie eine java.sql.Array in eine java.sql.SQLOutput in SQLData.writeSQL () für Oracle
Ich habe umgesetztjava.sql.SQLData
um UDT-Objekte mit ojdbc6 an vorbereitete Anweisungen zu binden. Jetzt enthalten einige meiner UDTs Arrays. Was ich jetzt tun muss, ist Folgendes:
class MyType implements SQLData {
public void writeSQL(SQLOutput stream) throws SQLException {
Array array = //...
stream.writeArray(array);
}
}
Zum Aufbau von Oracle-Arrays benötige ich eine JDBC-Verbindung. In der Regel geschieht dies folgendermaßen:
OracleConnection conn = // ...
Array array = conn.createARRAY("MY_ARRAY_TYPE", new Integer[] { 1, 2, 3 });
Darin jedochwriteSQL(SQLOutput)
Methode, ich habe keine Verbindung. Aus Gründen, die in einer knappen Frage schwer zu erklären sind, kann ich in auch keinen Verbindungsverweis pflegenMyType
. Kann ich irgendwie diese Verbindung extrahierenSQLOutput
? Ich möchte die Verwendung von instabilen Konstrukten wie folgt vermeiden:
// 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);
Irgendwelche Ideen? Alternativen?