我正在尝试从Oracle表中提取XML数据类型并面临此异常:
java.lang.NullPointerException: null
at oracle.jdbc.driver.NamedTypeAccessor.getOracleObject(NamedTypeAccessor.java:302) ~[ojdbc6-11.2.0.3.0.jar:11.2.0.3.0]
at oracle.jdbc.driver.NamedTypeAccessor.getSQLXML(NamedTypeAccessor.java:413) ~[ojdbc6-11.2.0.3.0.jar:11.2.0.3.0]
at oracle.jdbc.driver.OracleResultSetImpl.getSQLXML(OracleResultSetImpl.java:1251) ~[ojdbc6-11.2.0.3.0.jar:11.2.0.3.0]
at oracle.jdbc.driver.OracleResultSet.getSQLXML(OracleResultSet.java:488) ~[ojdbc6-11.2.0.3.0.jar:11.2.0.3.0]
代码段:
SQLXML sqlxml = resultSet.getSQLXML(1);
我已经仔细检查了获取结果集的查询,并且它正在按预期工作。此外,我仅针对XMLType列面临此问题。
答案 0 :(得分:1)
public static void main(String[] args) throws SQLException, Exception {
Connection con = ConnectionDefinition.getOracleConnection(); //my oracle connection
PreparedStatement ps = con.prepareStatement("SELECT a.b FROM xml_test a");
ResultSet rs = ps.executeQuery();
while(rs.next()){
if( rs.getObject(1) != null ){
SQLXML xml = rs.getSQLXML(1);
System.err.println(xml.getString());
} else {
System.err.println("xmltype is null");
}
}
rs.close();
con.close();
}
和pom依赖。我建议在11.2.0.4版本中使用oracle drivie。
<dependencies>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>xdb</artifactId>
<version>11.2.0.4</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>xmlparserv2</artifactId>
<version>11.1.2</version>
</dependency>
</dependencies>