druid读取clob字段问题

来源:互联网 发布:手机不能连接数据网络 编辑:程序博客网 时间:2024/06/04 18:43

异常信息

Exception in thread "main" java.lang.ClassCastException: com.alibaba.druid.pool.DruidPooledResultSet cannot be cast to oracle.jdbc.OracleResultSet

类型转换异常

解决方法

public class QueryDataService {    private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    public  String  get25MaxTime() {        DataSaveBase db = new DataSaveBase();        String time = sdf.format(new Date());        String sql = "select max(answertime) time  from question";        ResultSet rs = db.query(sql );        try {            while(rs.next()){                 time= sdf.format(rs.getTimestamp("time"));            }        } catch (SQLException e) {            e.printStackTrace();        } finally {            db.closeConnection(rs);        }        return time;    }    public   List<Question> queryData(String time) {        List<Question> question = new ArrayList<Question>();        DataquerymsgBase db = new DataquerymsgBase();        String sql = "select *&*……*&*& addtime > to_date(?,'yyyy-mm-dd hh24:mi:ss')";        ResultSet rs = db.query(sql, time);        try {            while (rs.next()) {                Question q = new Question();                q.setDateTime(rs.getTimestamp("ADDTIME"));                ClobProxyImpl content = (ClobProxyImpl) rs.getClob("CONTENT");                oracle.sql.CLOB contentclob = (CLOB)content.getRawClob();                ClobProxyImpl recontent = (ClobProxyImpl) rs.getClob("RECONTENT");                oracle.sql.CLOB recontentclob = (CLOB)recontent.getRawClob();                try {                    q.setContent(readStringFromClob(contentclob));                    q.setAnswer(readStringFromClob(recontentclob));                } catch (Exception e) {                    e.printStackTrace();                }                q.setNewid(rs.getString("id"));                q.setEmail(rs.getString("EMAIL"));                q.setPhone(rs.getString("TEL"));                q.setReplyTime(rs.getTimestamp("RETIME"));                q.setName(rs.getString("name"));                question.add(q);            }        } catch (SQLException e) {            e.printStackTrace();        } finally {            db.closeConnection(rs);        }        System.out.println("当前更新数据条数:" + question.size());        return question;    }    public static String readStringFromClob(Clob clobField) // 类型转换方法            throws Exception {        Reader in = null;        in = ((CLOB) clobField).getCharacterStream();        int length = 0;        char buffer[] = new char[1024];        StringBuffer sb = new StringBuffer();        try {            while ((length = in.read(buffer)) != -1)                sb.append(buffer, 0, length);        } catch (Exception e) {            throw new Exception("IO error:".concat(String.valueOf(String.valueOf(e.getMessage()))));        } finally {            in.close();        }        return sb.toString();    }}

ClobProxyImpl content = (ClobProxyImpl) rs.getClob(“CONTENT”);
oracle.sql.CLOB contentclob = (CLOB)content.getRawClob();
这里转换一下即可

参考此篇

原创粉丝点击