Java:Oracle XMLType + JDBC

时间:2010-11-30 21:32:40

标签: java xml oracle jdbc

如何将oracle XMLElement送到JDBC?

java.sql.Statement st = connection.createStatement(); // works
oracle.jdbc.OracleResultSet rs = st.execute("SELECT XMLElement("name") FROM dual");
rs.getString(1); // returns null, why?
oracle.sql.OPAQUE = (OPAQUE) rs.getObject(1); // this works, but wtf is OPAQUE ?

基本上,我想读取<name> </name>之类的字符串或任何XML格式的输出。但我总是无法将输出转化为合理的。只有奇怪的oracle.sql.OPAQUE有效,但我完全不知道如何处理它。即使toString()也未被覆盖!

有什么想法吗?如何阅读Oracle(我使用的是Oracle 10.0.2)XMLElement(XMLType)?

2 个答案:

答案 0 :(得分:11)

你做不到。 Oracle的JDBC驱动程序不能正确支持JDBC XML类型。

您唯一能做的就是将XML转换为查询的一部分:

SELECT to_clob(XMLElement("name")) from dual

然后,您可以使用getString()

检索XML

或者您也可以使用XMLElement("name").getClobVal(),但这也是您的查询的一部分,它可以从Java类中作为String访问

答案 1 :(得分:1)

  

ORA-1652:无法在表空间temp中扩展临时段128   完全不同的错误,与XMLElement无关。

只是你要将你的临时文件设置为自动调整大小或给它更大的尺寸:

 ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/product/10.2.0/db_1/oradata/oracle/temp01.dbf' SIZE 10M AUTOEXTEND ON

ALTER DATABASE TEMPFILE '/u01/app/oracle/product/10.2.0/db_1/oradata/oracle/temp01.dbf' RESIZE 200M