oracle9i支不支持clob,oracle9i中关于CLOB字段的读写

读取简单点,用到输入输出流。

1

4f1150b881333f12a311ae9ef34da474.pngprivateString getClob (CLOB clob)throwsException21fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{3d18c02628675d0a2c816449d98bda930.png//2种写法497e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif/** *//**5d18c02628675d0a2c816449d98bda930.png    oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob(1);6d18c02628675d0a2c816449d98bda930.png    BufferedReader in = new BufferedReader(clob.getCharacterStream());7d18c02628675d0a2c816449d98bda930.png    StringWriter out=new StringWriter();8d18c02628675d0a2c816449d98bda930.png    int c;9d18c02628675d0a2c816449d98bda930.png    while((c=in.read())!=-1)10d18c02628675d0a2c816449d98bda930.png    {11d18c02628675d0a2c816449d98bda930.png        out.write(c);12d18c02628675d0a2c816449d98bda930.png    }13d18c02628675d0a2c816449d98bda930.png    String content=out.toString();14ecedf933ec37d714bd4c2545da43add2.png*/15d18c02628675d0a2c816449d98bda930.png16d18c02628675d0a2c816449d98bda930.png    String content="";17d18c02628675d0a2c816449d98bda930.png18d18c02628675d0a2c816449d98bda930.png    Reader is=clob.getCharacterStream();19d18c02628675d0a2c816449d98bda930.png    BufferedReader br=newBufferedReader(is);20d18c02628675d0a2c816449d98bda930.png    String s=br.readLine();21d18c02628675d0a2c816449d98bda930.pngwhile(s!=null)2297e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{23d18c02628675d0a2c816449d98bda930.png        content+=s+"\r\n";24d18c02628675d0a2c816449d98bda930.png        s=br.readLine();25ecedf933ec37d714bd4c2545da43add2.png    }26d18c02628675d0a2c816449d98bda930.png27d18c02628675d0a2c816449d98bda930.pngreturncontent;28d18c02628675d0a2c816449d98bda930.png298f1ba5b45633e9678d1db480c16cae3f.png}

下面是写入CLOB

1

4f1150b881333f12a311ae9ef34da474.png//the first, run24f1150b881333f12a311ae9ef34da474.png//ResultSet rs = null;34f1150b881333f12a311ae9ef34da474.png//String sSQL = "select " + ColName + " from " + tableName + " where id= '" + ID + "' for update";44f1150b881333f12a311ae9ef34da474.png//(oracle.sql.CLOB)rs.getClob(number);54f1150b881333f12a311ae9ef34da474.pngprivatevoidfillClob (CLOB clob, String data)throwsException61fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{7d18c02628675d0a2c816449d98bda930.pngif(data==null)897e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{9d18c02628675d0a2c816449d98bda930.png            data="no value !";10ecedf933ec37d714bd4c2545da43add2.png        }11d18c02628675d0a2c816449d98bda930.pngif(clob!=null)1297e794c86028c5f5b5461ae5ef440a4c.png

3c6cafce68eb941a00f1998f1d3d3aa6.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{13d18c02628675d0a2c816449d98bda930.png            Writer wr=clob.getCharacterOutputStream();14d18c02628675d0a2c816449d98bda930.png            wr.write(data);15d18c02628675d0a2c816449d98bda930.png            wr.flush();16d18c02628675d0a2c816449d98bda930.png            wr.close();17ecedf933ec37d714bd4c2545da43add2.png         }188f1ba5b45633e9678d1db480c16cae3f.png      }

conn.setAutoCommit(false);//取消自动提交

需要被首先执行

需要插入一条新的记录时,可以像下面这样:

1. 先取sequence的值

strSql = "select sequence(表中column的名字).nextval from dual";

pstm = this.conn.prepareStatement(strSql);

rs = pstm.executeQuery();

2. 插入一个空值的CLOB

insert into tableName t (t.CLOB_column, t.sequence) values(empty_clob(), id)

pstm.executeUpdate();

3. 把这一行锁定,用select ...for update语句,然后在写入

strSql = "select t.CLOB_column from tableName t where t.sequence= " + id + " for update";

pstm = this.conn.prepareStatement(strSql);

rs = pstm.executeQuery();

if (rs.next())

{

clob1= (oracle.sql.CLOB) rs.getClob(1);

fillClob(clob1, content);

}

rs.close();

conn.commit();//对应上面的那句      pstm.close();

更新一条记录

1. 清空CLOB的内容

strSql = "update tableName t  set t.CLOB_column = empty_clob() where t.id ='" + id + "'";

pstm = this.conn.prepareStatement(strSql);

pstm.executeUpdate();

2. 和插入新记录一样,需要用for update锁定

1

4f1150b881333f12a311ae9ef34da474.pngstrSql="select t.CLOB_column from tableName t where t. ='"+id+"' for update";24f1150b881333f12a311ae9ef34da474.pngpstm=this.conn.prepareStatement(strSql);34f1150b881333f12a311ae9ef34da474.pngrs=pstm.executeQuery();44f1150b881333f12a311ae9ef34da474.pngwhile(rs.next())51fa987a29c6482f53d401256f96355eb.png

ca75c07623e1b494fee67e8f316fc310.gif9b8a8a44dd1c74ae49c20a7cd451974e.png{6d18c02628675d0a2c816449d98bda930.png    clob=(oracle.sql.CLOB) rs.getClob(3);7d18c02628675d0a2c816449d98bda930.png    fillClob(clob, content);8d18c02628675d0a2c816449d98bda930.png    conn.commit();98f1ba5b45633e9678d1db480c16cae3f.png}104f1150b881333f12a311ae9ef34da474.pngpstm=null;114f1150b881333f12a311ae9ef34da474.png124f1150b881333f12a311ae9ef34da474.pngstrSql="update tableName t set t.CLOB_column, t.date = to_date('"+sdate+"','YYYY-MM-DD') where t.id ="+id;134f1150b881333f12a311ae9ef34da474.pngpstm=this.conn.prepareStatement(strSql);144f1150b881333f12a311ae9ef34da474.pngintaflag=pstm.executeUpdate();154f1150b881333f12a311ae9ef34da474.pngconn.commit();164f1150b881333f12a311ae9ef34da474.png174f1150b881333f12a311ae9ef34da474.pngrs.close();184f1150b881333f12a311ae9ef34da474.pngpstm.close();

posted on 2007-04-27 09:39 hiker 阅读(598) 评论(1)  编辑  收藏 所属分类: oracle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值