1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.dbunit.ext.oracle;
22
23 import java.sql.PreparedStatement;
24 import java.sql.ResultSet;
25 import java.sql.SQLException;
26
27 import oracle.jdbc.OraclePreparedStatement;
28 import oracle.jdbc.OracleResultSet;
29 import oracle.sql.OPAQUE;
30 import oracle.sql.OpaqueDescriptor;
31
32 import org.dbunit.dataset.datatype.BlobDataType;
33 import org.dbunit.dataset.datatype.TypeCastException;
34
35
36
37
38
39
40
41
42
43 public class OracleXMLTypeDataType extends BlobDataType
44 {
45
46 public Object getSqlValue(int column, ResultSet resultSet) throws SQLException, TypeCastException
47 {
48 byte[] data = new byte[0];
49 OracleResultSet oracleResultSet = (OracleResultSet) resultSet;
50 OPAQUE opaque = oracleResultSet.getOPAQUE(column);
51 if (opaque != null)
52 {
53 data = opaque.getBytes();
54 }
55
56
57 return typeCast(data);
58 }
59
60 public void setSqlValue(Object value, int column, PreparedStatement statement) throws SQLException, TypeCastException
61 {
62 OraclePreparedStatement oraclePreparedStatement = (OraclePreparedStatement) statement;
63 OpaqueDescriptor opaqueDescriptor = OpaqueDescriptor.createDescriptor("SYS.XMLTYPE", statement.getConnection());
64 OPAQUE opaque = new OPAQUE(opaqueDescriptor, (byte[]) typeCast(value), statement.getConnection());
65 oraclePreparedStatement.setOPAQUE(column, opaque);
66 }
67 }