试一下:
Writer out = clob.getCharacterOutputStream();

解决方案 »

  1.   

    不行啊
    "NewsMethod.java": incompatible types; found   : java.io.Reader, required: java.io.Writer at line 37, column 27
      

  2.   

    BufferedWriter(java.io.Reader)
    提示说没有这样的构造方法。也就是你用的BufferedWriter(clob.getCharacterStream())这种方法。
      

  3.   

    楼主以下代码是正常运行的,把getCharacterStream替换成getCharacterOutputStream还不行,那应该不是你代码的问题了。
    ResultSet rs = ps.executeQuery();
    while (rs.next()) {
        oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob(1);
    //Writer out = clob.getCharacterOutputStream();
    BufferedWriter out =new BufferedWriter(clob.getCharacterOutputStream());
        System.out.println(clob);
    out.close();
    }
      

  4.   

    那我改怎么解决呢?
    我用的web容器是Tomcat和Oracle9.0i
      

  5.   

    CLOB没这个方法啊?
    clob.getCharacterOutputStream()?
      

  6.   

    没看到人家转换 成 oracle.sql.CLOB了吗?
    oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob(1);
      

  7.   

    把java.sql.Clob强制转换成oracle.sql.CLOBoracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob(1);
      

  8.   

    但我引入不了oracle这个包啊
    import没找到oracle这个包?
      

  9.   

    怎么才能引入这个oracle.sql.CLOB ?
      

  10.   

    把classes111.jar或classes12.jar引入工程中同时也必需放在web-inf\lib\目录下。
      

  11.   

    package tuofang.news;
    import java.sql.*;
    import tuofang.DatabaseConn;
    import java.text.SimpleDateFormat;
    import java.util.GregorianCalendar;
    import java.text.*;
    import java.sql.Clob;
    import java.io.BufferedWriter;
    import java.io.BufferedReader;
    import java.io.*;
    import oracle.sql.CLOB;
    public class NewsMethod {
    //添加新闻
      Connection con =null;
      java.sql.PreparedStatement ps=null;
      java.sql.ResultSet rs=null;
      public void addNews(News news) throws IOException{
        String title=news.getTitle();
        System.out.println("title:"+title);
        String content=news.getContent();
        System.out.println("content:"+content);
        String pic=news.getPic();
        System.out.println("pic:"+pic);
        GregorianCalendar calendar=new GregorianCalendar();//注意:月份范围为0-11
        java.util.Date d=calendar.getTime();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//24小时制
        String date=sdf.format(d).toString();
        try {
          con = DatabaseConn.getConnection();
          con.setAutoCommit(false);
          ps=con.prepareStatement("insert into news values(?,EMPTY_CLOB(),?,?)");
          ps.setString(1,title);
          ps.setString(2,date);
          ps.setString(3,pic);
          ps.executeUpdate();
          /*con.prepareStatement("select content from news where title=? for update");
          ps.setString(1,title);
          rs=ps.executeQuery();
          while(rs.next()){
            oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("content");
            BufferedWriter out =new BufferedWriter(clob.getCharacterOutputStream());
            BufferedReader in = new BufferedReader(new FileReader(title));
            int c;
            while ( (c = in.read()) != -1) {
              out.write(c);
            }
            in.close();
            out.close();
          }*/
          con.commit();
          con.setAutoCommit(true);
          rs.close();
          ps.close();
          con.close();
        }
        catch (Exception ex) {
          try {
            con.rollback();
          }
          catch (SQLException ex1) {
            System.out.println("sqlRollback:"+ex);
          }
          System.out.println("connError:"+ex);
        }
        finally {
          try {
            if(rs!=null){
              rs.close();
            }
            if (ps != null) {
              ps.close();
            }
            if (con != null) {
              con.close();
            }
       }
       catch (SQLException ex) {
         ex.printStackTrace();
       }
     }
      }
    }
    又出现问题了?
    插入的时候差不了总是抱插入重复值的错误?
      

  12.   

    我表中的数据都是空的      /*con.prepareStatement("select content from news where title=? for update");
          ps.setString(1,title);
          rs=ps.executeQuery();
          while(rs.next()){
            oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("content");
            BufferedWriter out =new BufferedWriter(clob.getCharacterOutputStream());
            BufferedReader in = new BufferedReader(new FileReader(title));
            int c;
            while ( (c = in.read()) != -1) {
              out.write(c);
            }
            in.close();
            out.close();
          }*/
    注释掉就可以插入数据了
      

  13.   

    老抱插入重复值的错误
    但我其他的title fbdate 和pic字段的值却全部可以插入到数据库里
    而content字段(clob类型)却总是不能插入总是在该字段的值里显示<CLOB>
    请大家帮我解决解决问题啊!
    分不够继续加分!
      

  14.   

    这是我的表
    create table news(
    title varchar(100) not null,
    content clob ,
    fbdate varchar(30) not null,
    pic varchar(80),
    primary key (title,fbdate)
    )