尝试使用OracleWebRowset
导出和导入ResultSet
个对象。
请参阅“https://docs.oracle.com/cd/B28359_01/java.111/b31224/jcrowset.htm#BABCFJBE”
OracleWebRowSet rs = new OracleWebRowSet();
System.setProperty("javax.xml.parsers.SAXParserFactory","oracle.xml.jaxp.JXSAXParserFactory");
FileReader fReader = new FileReader("xmlfile.xml");
rs.readXml(fReader);
rs.acceptChanges();
rs.close();
这引发了错误:
java.lang.ClassCastException: oracle.jdbc.rowset.OracleWebRowSet cannot be cast to com.sun.rowset.CachedRowSetImpl
at com.sun.rowset.internal.CachedRowSetWriter.writeData(CachedRowSetWriter.java:275)
at oracle.jdbc.rowset.OracleCachedRowSet.acceptChanges(OracleCachedRowSet.java:1776)
尝试将基本WebRowSetImpl()
投射无效
我无法使用基本WebRowSet
的原因是因为oracle NVARCHAR2
列在编写和读取XML时出现问题,引发了诸如“无法形成插入语句”和“不合适”之类的错误类型“
有没有解决方法?
答案 0 :(得分:0)
我找到了解决方案......
似乎OracleCachedRowSet
基类OracleWebRowSet
因此,要解决此问题,请在调用acceptchanges()
方法
rs.setReader(new OracleCachedRowSetReader());
rs.setWriter(new OracleCachedRowSetWriter());
所以固定代码看起来像:
OracleWebRowSet rs = new OracleWebRowSet();
System.setProperty("javax.xml.parsers.SAXParserFactory","oracle.xml.jaxp.JXSAXParserFactory");
FileReader fReader = new FileReader("xmlfile.xml");
rs.readXml(fReader);
rs.setReader(new OracleCachedRowSetReader());
rs.setWriter(new OracleCachedRowSetWriter());
rs.acceptChanges();
rs.close();