Java:OracleXMLType+JDBC

Java:OracleXMLType+JDBC,java,xml,oracle,jdbc,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.getO

如何将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 ?
基本上,我想读取字符串或任何XML格式的输出。但我总是无法将产出转化为任何合理的结果。只有奇怪的oracle.sql.OPAQUE可以工作,但我完全不知道该怎么办。即使toString也不会被覆盖

有什么想法吗?如何阅读Oracle的《我在使用Oracle 10.0.2 XMLElement XMLType》?

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

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

SELECT to_clob(XMLElement("name")) from dual 然后可以使用getString检索XML

或者,您也可以使用XMLElementname.getClobVal,但这也是查询的一部分,可以从Java类中以字符串的形式访问它

ORA-1652:无法在表空间中将临时段扩展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

在从dual选择clobXMLElementname时,我一直得到ORA-1652:无法在表空间中将temp段扩展128 temp必须与您的安装有关。它对我来说很好11.1.0.6。您尝试过getClobVal版本吗?没有,我应该使用什么实例?只需将XMLElementname.getClobValyep替换为_clobXMLElementname即可!非常感谢你。。。顺便说一句,我从来没有见过这样糟糕的Java API,直接来自Oracle…这与这个问题有什么关系?