java 插入oracle clob字段问题

yxflyhai 2011-04-15 10:58:44
使用此方法 不能更新clob字段的值,每次更新stmt.executeUpdate();//执行SQL,
获得的执行条数为0,因此每次插入都是empty_clob() ,也不报错误或者异常,哪位大侠有遇到类似情况的吗

// --------------clob字段测试方法---------------//
//修改content的值,插入CLOB字段(网上代码)
public void updateClob(Connection conn,String seqcode,String content) throws Exception
{
//-----strat:为存储过程建立数据库连接-----//
Pub_DatabaseChoice pub_DatabaseChoice = new Pub_DatabaseChoice();
String connstr=pub_DatabaseChoice.getConnStr();
String user=pub_DatabaseChoice.getUser();
String passwd=pub_DatabaseChoice.getPassword();

//Class.forName("oracle.jdbc.driver.OracleDriver");
//conn = DriverManager.getConnection(connstr,user, passwd);
Properties props = new Properties();
props.put("user", user );
props.put("password", passwd);
props.put("SetBigStringTryClob", "true");
DriverManager.registerDriver(new OracleDriver());
conn = DriverManager.getConnection( connstr, props );



// -----end:为存储过程建立数据库连接-----//
String sql = "update " + tableName + " set content=? where seqcode="+seqcode;
//Statement pstmt = null;
PreparedStatement stmt = null;

boolean defaultCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
try
{
// oracle.sql.CLOB newClob = oracle.sql.CLOB.createTemporary(conn, false, oracle.sql.CLOB.DURATION_CALL);
// newClob.setString(1, content);

//java.sql.Clob c = new javax.sql.rowset.serial.SerialClob( "abc ".toCharArray());//用于jdk5.0
// CLOB Clob = oracle.sql.CLOB.empty_lob();
// Clob.setString(1,content);

//执行SQL有两种方式PreparedStatement 对象和Statement对象,本人使用 PreparedStatement 对象
stmt=conn.prepareStatement(sql);//加载SQL语句
//由于PreparedStatement 支持SQL带有问号“?”可以动态替换?的内容。以下是替换?的方法
//替换?的方法 “1”代表第一为“?”(参数的设置是从1开始的,不是0开始)
//正常的插入方式
int len = content.length();
System.out.println("len:"+len);

// //创建并实例化一个CLOB对象
CLOB clob = oracle.sql.CLOB.createTemporary(conn,false,1);
// //对CLOB对象赋值
clob.putString(1,content);
stmt.setClob(1,clob);


//Reader clobReader = new StringReader(content); //将 content转成流形式
//stmt.setCharacterStream(1,clobReader,len);
//stmt.setClob(1,newClob);

int num=stmt.executeUpdate();//执行SQL
if(num>0)
{
System.out.println("ok");
conn.commit();
}
else
{
System.out.println("NO");
}
}catch (Exception e) {
e.printStackTrace();
}

conn.setAutoCommit(defaultCommit);
}
...全文
250 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙四 2011-04-15
  • 打赏
  • 举报
回复
我记得oracle8中要先insert一个empty_clob(),然后update掉该字段才行

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧