当用c3p0连接时,得到的ResultSet并不是java.sql.ResultSet,而是改写的ResultSet:   c3p0获得的ResultSet是:com.mchange.v2.c3p0.impl.NewProxyResultSet 所以在取clob字段的内容的时候会出现nulloracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob(ColumnName);
BufferedReader in = new BufferedReader(clob.getCharacterStream());这个时候clob 等于 null
如果直接使用JDBC链接则没有问题,因为他的ResultSet是java.sql.ResultSet我在取值之前分别打印了一下ResultSet
c3p0:      com.mchange.v2.c3p0.impl.NewProxyResultSet@15872f5
直接JDBC:  oracle.jdbc.driver.OracleResultSetImpl@1a7bf11 
请问这个问题怎么解决,看在已经忙碌到凌晨4点的时候,大家帮帮忙啊!
谢谢了!

解决方案 »

  1.   

    have a try
    BufferedReader in = new BufferedReader(rs.getCharacterStream(ColumnName)); 
      

  2.   

    晕,这个不是ResultSet的原因经过跟踪测试,发现原因出现在哪里了一个很低级的错误,可能是昨天晚上太迷糊了,没有判断 clob 是否为空
    clob字段里面如果没有内容,那么它会返回一个null
    所以自然会抛出一个NullPointException