为clob变量赋值

时间:2015-06-02 09:53:09

标签: java oracle

假设有一个变量CLOB响应。 我如何在java中为这个clob变量赋值?

我这样做:

Clob clob=null;
clob.setString(0, "<test></test>");

第二行显示错误,说clob在这里只能为null。

更新 -

ValResponses valResponses=new ValResponses();
          valResponses.setVraId(Long.parseLong("12"));
          Clob clob = null;
          //clob.setString(1, "<test></test>");
          valResponses.setFullResponse(clob);
          valResponses.setValReport(fileName);

看到有一个pojo ValResponses现在这个pojo有一个变量valresponse有类型CLOB,现在我想设置一些虚拟值,如何做到这一点,?

4 个答案:

答案 0 :(得分:0)

首先,初始化clob值,如下面设置值(xml)

java.sql.Clob clobValue = oracle.sql.CLOB.createTemporary(dBconnection,false,oracle.sql.CLOB.DURATION_SESSION);

答案 1 :(得分:0)

您也可以尝试使用简单的方法来创建Clob

Clob xmlClob = con.createClob();

答案 2 :(得分:0)

connection对象获取它,然后将值设置为它。

OracleConnection conn;  // initialize this first

CLOB clob = conn.CreateClob();
clob.setString(0, "<test></test>");

或者,另一种设置值的方法

Clob myClob = null;
if (rs.next()) { //rs is ResultSet object
      myClob = rs.getClob(1);
      System.out.println("Length of retrieved Clob: "+myClob.length());
 }

答案 3 :(得分:0)

将类实现java.sql.Clob定义为:

public class MyClob implements java.sql.Clob {
    final String value;
    public MyClob(String value) { this.value = value; }
    @Override public long length() { return value.length(); }
    @Override public String getSubString(long pos, int length) {
        return value.substring((int)pos, (int)pos + length);
    }
    @Override public Reader getCharacterStream() { return new StringReader(value); }
    @Override public InputStream getAsciiStream() { return null; } 
    @Override public long position(String searchstr, long start) { return 0; }
    @Override public long position(Clob searchstr, long start) { return 0; }
    @Override public int setString(long pos, String str) { return 0; } 
    @Override public int setString(long pos, String str, int offset, int len) { return 0; } 
    @Override public OutputStream setAsciiStream(long pos) { return null; } 
    @Override public Writer setCharacterStream(long pos) { return null; } 
    @Override public void truncate(long len) { } 
    @Override public void free() { } 
    @Override public Reader getCharacterStream(long pos, long length) { return null; }

}

然后

Clob clob = new MyClob("<test></test>");