java - 我正在尝试使用 JDBC 从 Oracle 表中提取 XMLTYPE 列,但遇到一些问题

标签 java sql oracle jdbc xmltype

我正在尝试使用 JDBC 从 Oracle 表中提取 XMLTYPE 列。
我有一个疑问:

    select "XML_FILE" FROM "TABLE_NAME"

当我在 Oracle SQL Developer 中运行查询时,它完全正常地返回所有 XMLTYPE 行。

但是,当我运行以下 Java 代码并运行相同的查询时,我总是为每列返回“null”。我不确定出了什么问题,我尝试过做很多不同的事情,但没有任何效果。重要提示 - 每个 XMLTYPE 字段都有一个最多包含 60,000 行 XML 的 XML 文件。

我正在使用的Java代码:

String query = "select \"XML_FILE\" FROM \"TABLE_NAME\"";
//creating PreparedStatement object to execute query
PreparedStatement preStatement = null;
try {
   System.out.println("QUERY: "+query);
   preStatement = con.prepareStatement(query);   //con is the Connection obj
} catch (SQLException e) {
   e.printStackTrace();  
}

ResultSet result = null;
try {
   result = preStatement.executeQuery();
} catch (SQLException e) {
   e.printStackTrace();  
}
System.out.println("RESULT SET: "+result.toString());
String dataResult = "";
while(result.next()){
   for(int i=1; i<=numCols; i++){
      dataResult += result.getObject(i)+"\t";
      //dataResult += result.getString(i)+"\t";
   }
   dataResult+="\n";
   System.out.println("RESULT: \'"+dataResult+"\'");
}   

任何帮助将不胜感激。谢谢!

最佳答案

由于 varchar 长度(4000 字节)的限制,您无法将其作为字符串 (varchar) 检索。 选择它作为 CLOB:

    String query = "SELECT TBL.XMLTYPECOLUMN.GETCLOBVAL() FROM TABLE TBL";
    rs = stmt.executeQuery(query);
    xmlClob = (Clob) rs.getClob(1);

http://kodehelp.com/how-to-read-xmltype-column-from-database-using-jdbc/

关于java - 我正在尝试使用 JDBC 从 Oracle 表中提取 XMLTYPE 列,但遇到一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25515119/

相关文章:

java - 您如何分析 Drools 应用程序?

java - Android AsyncTask,处理不可用的服务器

oracle - 使用记录类型对象更新表

mysql - 将一个表中自动生成的索引插入到另一个表中

database - 按降序索引日期列是个好主意吗?

oracle - 在 PL/SQL 中重置关联数组?

java - java jaxb 是如何工作的?

java - 在 Keycloak 中通过 refresh_token 刷新 access_token

连接表和派生表的MySQL性能比较

mysql - 如何在mysql查询中显示 "repost"之类的转发?