java-JDBC插入Clob字段
2014-04-14 08:48
302 查看
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,就可以了!
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,就可以了!
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字段的插入与更新
- 从 Oracle 大字段(blob,clob)的读、写认识 Java JDBC操作全攻略
- clob字段的值插入和查询N种方法【包括java调用存储过程传入clob参数】
- JAVA数据库编程——JDBC(二):插入时间字段,显示小时分钟秒
- java插入内容进入oracle的clob字段
- java插入clob字段
- java 将长度很长的字符串(巨大字符串超过4000字节)插入oracle的clob字段时会报错的解决方案
- java插入clob字段
- JDBC插入Oracle的CLOB字段的简单实用的例子和几点注意事项
- 通过JDBC 操作 ORACLE BLOB,CLOB字段类型
- 使用java + oracle插入clob类型的数据
- mfc 插入oracle blob、clob字段
- JAVA中使用JDBC插入大量mysql中的数据
- JAVA中clob字段变成String
- JDBC 批量插入Mysql 字段值采用随机字符 100万条数据
- Java获取Oracle中CLOB字段转换成String
- jdbc插入修改clob类型的两种方式
- java操作将字符串写入clob字段
- clob字段只能写入4k内容,超过后报null at org.apache.openjpa.jdbc.sql.OracleDictionary.putString
- oracle9i clob字段插入 报错ORA-01461