Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Oracle createTemporary更新Clob_Java_Sql_Oracle_Jdbc_Oracle11g - Fatal编程技术网

Java 使用Oracle createTemporary更新Clob

Java 使用Oracle createTemporary更新Clob,java,sql,oracle,jdbc,oracle11g,Java,Sql,Oracle,Jdbc,Oracle11g,我使用以下代码更新Oracle Clob: CLOB tempClob = null; try { Connection conn = getConnection(); PreparedStatement = = conn.prepareStatement("UPDATE PROGRAM_HISTORY SET DETAILS = ? WHERE ID = 12"); tempClob = CLOB.createTemporary(conn, true, CLOB.DURATION_

我使用以下代码更新Oracle Clob:

CLOB tempClob = null;
try {
  Connection conn = getConnection();
  PreparedStatement = = conn.prepareStatement("UPDATE PROGRAM_HISTORY SET DETAILS = ? WHERE ID = 12");
  tempClob = CLOB.createTemporary(conn, true, CLOB.DURATION_SESSION);
  tempClob.open(CLOB.MODE_READWRITE);
  Writer tempClobWriter = tempClob.getCharacterOutputStream();
  tempClobWriter.write(clobData);
  tempClobWriter.flush();
  tempClobWriter.close();
  tempClob.close();

 pStmt.setClob(1, tempClob);
 pStmt.execute();

} catch (Exception ex) { // Trap errors
  System.out.println(" Error Inserting Clob : "+ex.toString());
  ex.printStackTrace();
}finally{
  if(tempClob != null ) tempClob.freeTemporary();
  opstmt.close();
  conn.close();

}
如您所见,在创建临时clob之后,我使用了tempClob.open(clob.MODE_READWRITE); 稍后打开并使用tempClob.close()关闭;所以我的问题是这有必要吗?如果是,为什么?因为我从谷歌搜索的一些示例代码没有这个过程


我的第二个问题是,finally语句中的tempClob.close()是否需要这样做;我们必须关闭临时clob,就像用完后的连接一样?或者不需要这样做,它将被自动释放?

Oracle会话对象将保留对CLOB的引用,因此垃圾收集器不会接触它。当会话关闭时,它将自动释放

请注意,实际的临时CLOB内存不会存在于Java VM中的某个位置,而是存在于Oracle server进程(PGA)或临时表空间(磁盘)中,具体取决于您的数据库配置和当前工作负载