SQLXML 不可读写

用最新DB2 JDBC TYPE4 连接数据库,对XML字段进行读写操作时报以下错误:com.ibm.db2.jcc.a.SqlException: [jcc][10375][11942][4.0.100] 操作无效:DB2Xml 不可读/写。 ERRORCODE=-4475, SQLSTATE=null

错误代码片断:

  1.   PreparedStatement stmt=connection.prepareStatement("SELECT * FROM  CATALOGTOM WHERE catalogId=?");
  2.     stmt.setInt(11);
  3.     ResultSet rs=stmt.executeQuery();
  4.     rs.next();
  5.     SQLXML sqlXML=rs.getSQLXML("catalog");
  6.     System.out.println(sqlXML.getString());
  7.     java.io.InputStream binaryStream =  sqlXML.getBinaryStream() //此行产生错误

原因从sun那里得到答案,原来SQLXML只在未释放之前只允许读写一次(http://gceclub.sun.com.cn/Java_Docs/jdk6/html/zh_CN/api/java/sql/SQLXML.html);

从 SQLXML 对象读取和向 SQLXML 对象写入 XML 值最多可以发生一次。可读和不可读(概念上的状态)确定一个读取 API 将返回一个值还是抛出一个异常。可写和不可写(概念上的状态)确定一个写入 API 将设置一个值还是抛出一个异常。

在调用 free() 或以下任一读取 API 后,状态从可读转为不可读:getBinaryStream()、getCharacterStream()、getSource() 和 getString()。在这种情况下,实现也可以将状态更改为不可写。

在调用 free() 或以下任一写入 API 后,状态从可写状态转为不可写状态:setBinaryStream()、setCharacterStream()、setResult() 和 setString()。在这种情况下,实现也可以将状态更改为不可读。

如果 JDBC 驱动程序支持该数据类型,则必须完全实现 SQLXML 接口中的所有方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值