Как получить столбец XMLType из базы данных Oracle, используя функцию rs.getSQLXML () из пакета java.sql? - PullRequest
1 голос
/ 30 июня 2019

Когда я пытаюсь получить столбец 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. Это может быть проблемой здесь. Что я могу сделать с этим?

1 Ответ

0 голосов
/ 01 июля 2019

Сам драйвер JDBC не обеспечивает всего необходимого для использования API JDBC XML.

Вам нужны дополнительные библиотеки вместе с jar базового драйвера: xdb.jar и и xmlparserv.jar.

xdb.jar можно загрузить из того же места , что и базовый драйвер

xmlparserv.jar должно быть где-то в вашей установке Oracle .

...