没办法,只好选择第三种,上网查了些操作CLOB对象的资料,如下:
建表sql:
-- Create table T_CLOBTEST
CREATE TABLE T_CLOBTEST
(
ID VARCHAR2(20),
CLOBCOLUMN CLOB
);
-- Add comments to the columns
comment on column T_CLOBTEST.ID is '流水号';
comment on column T_CLOBTEST.CLOBCOLUMN is 'Clob字段';
----------------------------------------------------------------------------------------------------------------------------------
数据库表的对象:
public class ClobEntity {
private String id = "";
private String clobColumn = "";
public String getClobColumn() {
return clobColumn;
}
public void setClobColumn(String clobColumn) {
this.clobColumn = clobColumn;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
---------------------------------------------------------------------------------------------------------------------------------
数据库操作类代码:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import oracle.sql.CLOB;
import com.baosight.demo.entity.ClobEntity;
import com.baosight.demo.util.DBUtil;
public class ClobTestDAO {
/**
* @param args
*/
public static void main(String[] args) {
/*ClobEntity clobEntity = new ClobEntity();
clobEntity.setId("1");
new ClobTestDAO().insert(clobEntity);*/
new ClobTestDAO().queryById("1", "f:/fjdaljf.java");
}
/**
* 新增记录
* @param ClobEntity
*/
public void insert(ClobEntity clobEntity) {
try {
//获取数据库操作句柄
Connection conn = new DBUtil().getConn();
//设为不自动提交
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
//先初始化CLOB字段,此处为必须的操作,否则后面会产生空指针异常
String initSql = "INSERT INTO T_CLOBTEST VALUES('" + clobEntity.getId() + "', EMPTY_CLOB())";
//读取CLOB字段
String updateSql = "SELECT CLOBCOLUMN FROM T_CLOBTEST WHERE ID = '" + clobEntity.getId() + "'";
stmt.executeUpdate(initSql);
ResultSet rs = stmt.executeQuery(updateSql);
if (rs.next()) {
CLOB clob = (CLOB) rs.getClob(1); //获取CLOB字段内容并转换为 oracle.sql.CLOB类型
//获取CLOB的输出流
Writer os = clob.getCharacterOutputStream();