Когда я пытаюсь получить столбец XMLType из базы данных Oracle, я получаю сообщение об ошибке:
java.sql.SQLException: Invalid column type
Проблема в функции rs.getSQLXML(1)
.
Мой код:
Connection conn = null;
String dbURL = "jdbc:oracle:thin:@localhost:1521:xe";
String user="user";
String pw = "pww";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(dbURL,user,pw);
} catch (Exception e) {
System.out.println(e);
}
Statement stmt = null;
String query = "select e.doc from XMLTABLE e";
try {
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
SQLXML sqlxml = rs.getSQLXML(1);
String xml1= sqlxml.getString();
System.out.println(xml1);
}
} finally {
if (stmt != null) { stmt.close(); }
}
Моя база данных:
CREATE TABLE XMLTABLE (
id NUMBER(4),
doc XMLTYPE
);
Я знаю, что есть другие способы получить столбец XMLType, например rs.getOPAQUE(1)
или rs.getCLOB(1)
с измененным запросом. Но мне нужно использовать функцию rs.getSQLXML (1) .
Я использую версию ojdbc6.
РЕДАКТИРОВАТЬ:
Я пытался с ojdbc8 и отлаженным кодом ojdbc8, и есть что-то вроде этого:
OPAQUE var2 = (OPAQUE)this.getOracleObject(var1);
return var2 == null ? null : (SQLXML)var2;
} catch (ClassCastException var3) {
throw (SQLException)((SQLException)DatabaseError.createSqlException(this.getConnectionDuringExceptionHandling(), 4).fillInStackTrace());
}
и возвращается java.lang.ClassCastException: oracle.xdb.XMLType cannot be cast to java.sql.SQLXML
. Это может быть проблемой здесь. Что я могу сделать с этим?