Oracle数据库中有个clob字段,事先执行了插入empty_clob()值,但是我在调用:
PreparedStatement st = conn.prepareStatement("SELECT content FROM topic WHERE tid=? FOR UPDATE");
st.setInt(1,tid);
ResultSet rs = st.executeQuery();
rs.next();rs.next()返回的是一个false。。
但是我在sqlplus里执行上面的SELECT查询语句,能得到的结果啊!!
在线盼高人解答!

解决方案 »

  1.   

    汗不好意思已经解决了。。问题出来st.setInt(1,tid);,应该用setString...
      

  2.   

    这是我写的一个例子,里面有关于clob的插入的解决方法
    Statement stmt = this.getStatement();
    if(stmt == null)return;
    //先插入一个值到数据表中,其中IMPORTDATA是clob类型,先插入一个    //empty_clob()
    int n = 0;
    StringBuffer strSql = new StringBuffer();
    strSql.append("insert into TXTFILEIMPORT(IMPORTDATA,DATADATE,DATAFILENAME) values")
          .append("(" + "empty_clob()" + ",To_Date('" + this.getFormat().format(date)+"','yyyy-mm-dd'),'" + fileName + "')");
    log.info(strSql.toString());
    try {
    n = stmt.executeUpdate(strSql.toString());
    } catch (SQLException e) {
    log.error(e);
    return;
    }
    if(n <= 0) {
    log.error("insert failed!!!");
    return;
    }

      
    //更新数据表中clob的值
    strSql.delete(0, strSql.length());
    strSql.append("select importData from txtFileImport where id = " + n1 + " for update");
    try {
    rs = stmt.executeQuery(strSql.toString());
    if(rs.next()) {
    oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("importData");
    Writer outStream = clob.setCharacterStream(0);
            char[] c = str.toCharArray();
            try {
    outStream.write(c, 0, c.length);
    outStream.flush();
        outStream.close();
    } catch (IOException e) {
    log.error("The error is: " + e );
    log.error("import txt file data fail");
    return;
    }  
        conn.commit();
        rs.close();
        stmt.close();
        conn.close();
    }
        
    } catch (SQLException e) {
    log.error("The error is: " + e );
    log.error("import txt file data fail");
    return;
    } finally {
    rs = null;
    stmt = null;
    conn = null;
    }
    log.info("Data import successful!");
    }
      

  3.   

    应该用:setAsciiStream(1,sbin,xxnr.length());
    搂主用setString()试试插入60000个字节以上的内容看看