java插入clob字段
2014-07-16 17:17
381 查看
1)clob类型的数据不能直接insert,要先通过empty_clob()方法给它分配一个locator(同理,blob的用empty_blob()函数分配locator).然后把它select出来(此时它当然没有数据,但结果集不是空的),得到一个Clob的对象,修改该对象的内容让它满足我们的需要,再通过update方法更新该行记录.
2) 通过select修改含lob类型的记录时一定要锁定该行(通过for update关键字实现),否则oracle会报错.
3) 刚插入的记录就select for update, 会出现"违反读取顺序"错误,解决办法是将自动提交功能置为false,即不允许自动提交,然后commit它,再select,就可以了!
下面是详细的实例:
[java] view
plaincopy
package com.data;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import oracle.sql.CLOB;
public class WriteClob {
/**
* beckham 2009-12-7 下午09:47:36
*/
public static void main(String[] args) throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url = "jdbc:oracle:thin:@localhost:1521:menhu";
String user = "zm";
String password = "zm";
Connection conn = DriverManager.getConnection(url, user, password);
//设置手动提交
conn.setAutoCommit(false);
Statement sta = null;
ResultSet rs = null;
PreparedStatement ps = null;
StringBuffer sb = new StringBuffer() ;
//clob字段的内容
sb.append("aaa").append("/r/n").append("bbbb").append("/r/n").append("ccc") ;
String sql ="insert into test values(2,empty_clob()) " ;
sta = conn.createStatement() ;
sta.executeUpdate(sql) ;
conn.commit() ;
//锁定并编辑当前数据
sql="select cdata from test where id=2 for update" ;
rs = sta.executeQuery(sql) ;
if(rs.next()){
//获取clob对象,此处的clob是oracle.sql.Clob
CLOB clob = (CLOB)rs.getClob(1) ;
clob.putString(1, sb.toString()) ;
//执行更新操作
sql="update test set cdata=? where id=2" ;
ps = conn.prepareStatement(sql) ;
//给clob字段赋值
ps.setClob(1, clob) ;
ps.executeQuery() ;
}
conn.commit();
rs.close();
ps.close();
sta.close();
conn.close();
}
}
2) 通过select修改含lob类型的记录时一定要锁定该行(通过for update关键字实现),否则oracle会报错.
3) 刚插入的记录就select for update, 会出现"违反读取顺序"错误,解决办法是将自动提交功能置为false,即不允许自动提交,然后commit它,再select,就可以了!
下面是详细的实例:
[java] view
plaincopy
package com.data;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import oracle.sql.CLOB;
public class WriteClob {
/**
* beckham 2009-12-7 下午09:47:36
*/
public static void main(String[] args) throws Exception {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url = "jdbc:oracle:thin:@localhost:1521:menhu";
String user = "zm";
String password = "zm";
Connection conn = DriverManager.getConnection(url, user, password);
//设置手动提交
conn.setAutoCommit(false);
Statement sta = null;
ResultSet rs = null;
PreparedStatement ps = null;
StringBuffer sb = new StringBuffer() ;
//clob字段的内容
sb.append("aaa").append("/r/n").append("bbbb").append("/r/n").append("ccc") ;
String sql ="insert into test values(2,empty_clob()) " ;
sta = conn.createStatement() ;
sta.executeUpdate(sql) ;
conn.commit() ;
//锁定并编辑当前数据
sql="select cdata from test where id=2 for update" ;
rs = sta.executeQuery(sql) ;
if(rs.next()){
//获取clob对象,此处的clob是oracle.sql.Clob
CLOB clob = (CLOB)rs.getClob(1) ;
clob.putString(1, sb.toString()) ;
//执行更新操作
sql="update test set cdata=? where id=2" ;
ps = conn.prepareStatement(sql) ;
//给clob字段赋值
ps.setClob(1, clob) ;
ps.executeQuery() ;
}
conn.commit();
rs.close();
ps.close();
sta.close();
conn.close();
}
}
相关文章推荐
- java插入内容进入oracle的clob字段
- java-JDBC插入Clob字段
- java插入clob字段
- java oracle clob字段的插入与更新
- java 将长度很长的字符串(巨大字符串超过4000字节)插入oracle的clob字段时会报错的解决方案
- clob字段的值插入和查询N种方法【包括java调用存储过程传入clob参数】
- 在oracle中插入CLOB字段(JDK1.5以后)
- java 存取 clob 字段
- 在java + oracle环境下,对于clob类型的数据的插入
- 使用java + oracle插入clob类型的数据
- 使用java + oracle插入clob类型的数据
- Java 存储和读取 oracle CLOB 类型字段
- java 写xml 到 clob 字段
- jsp中插入clob字段
- Java 存储和读取 oracle CLOB 类型字段
- java中对orcale的clob类型字段的增删改查
- 使用java + oracle插入clob类型的数据
- Java中读取Oracle中Clob字段的两种方法
- [急]Oracle Clob字段插入数据库时报:字符串长度过长
- 文件上传下载:通过java方法把附件保存到clob字段中