调用 acceptChanges() 时无法将 OracleWebRowSet 转换为 CachedRowSetImpl
OracleWebRowSet cannot be cast to CachedRowSetImpl when calling acceptChanges()
尝试使用 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 时出现问题,引发了 "can't form insert statements" 和 "not a proper type"
有什么解决办法吗?
我找到了解决方案...
似乎行集编写器和 reader 在 OracleWebRowSet
的 OracleCachedRowSet
基 class 中设置不正确
因此,要解决此问题,请在调用 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();
尝试使用 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 时出现问题,引发了 "can't form insert statements" 和 "not a proper type"
有什么解决办法吗?
我找到了解决方案...
似乎行集编写器和 reader 在 OracleWebRowSet
OracleCachedRowSet
基 class 中设置不正确
因此,要解决此问题,请在调用 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();