/*
--建表语句如下:
create table t_clob(
id varchar2(32) primary key,
clobfield CLOB
);
*/
/**
* 读取CLOB字段的代码示例
*
* 作者:wallimn<br/>
* 时间:2015-1-16<br/>
* 联系:wallimn@sohu.com<br/>
*/
public void readClob() {
//自定义的数据库连接管理类
Connection conn = DbManager.getInstance().getConnection();
try {
PreparedStatement stat = conn
.prepareStatement("select clobfield from t_clob where id='1'");
ResultSet rs = stat.executeQuery();
if (rs.next()) {
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs
.getClob("clobfield");
String value = clob.getSubString(1, (int) clob.length());
System.out.println("CLOB字段的值:" + value);
}
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
}
DbManager.getInstance().closeConnection(conn);
}
/**
* 写入、更新CLOB字段的代码示例
*
* 作者:wallimn<br/>
* 时间:2015-1-16<br/>
* 联系:wallimn@sohu.com<br/>
*/
public void writeClob() {
//自定义的数据库连接管理类
Connection conn = DbManager.getInstance().getConnection();
try {
conn.setAutoCommit(false);
// 1.这种方法写入CLOB字段可以。
PreparedStatement stat = conn
.prepareStatement("insert into t_clob (id,clobfield) values(sys_guid(),?)");
String clobContent = "This is a very very long string";
StringReader reader = new StringReader(clobContent);
stat.setCharacterStream(1, reader, clobContent.length());
stat.executeUpdate();
// 2.使用类似的方法进行更新CLOB字段,则不能成功
// stat.close();
// stat =null;
// stat =
// conn.prepareStatement("update t_clob set clobfield=? where id=1");
// stat.setCharacterStream(1, reader, clobContent.length());
// stat.executeUpdate();
// 3.需要使用for update方法来进行更新,
// 但是,特别需要注意,如果原来CLOB字段有值,需要使用empty_clob()将其清空。
// 如果原来是null,也不能更新,必须是empty_clob()返回的结果。
stat = conn
.prepareStatement("select clobfield from t_clob where id='1' for update");
ResultSet rs = stat.executeQuery();
if (rs.next()) {
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs
.getClob("clobfield");
Writer outStream = clob.getCharacterOutputStream();
char[] c = clobContent.toCharArray();
outStream.write(c, 0, c.length);
outStream.flush();
outStream.close();
}
conn.commit();
} catch (SQLException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DbManager.getInstance().closeConnection(conn);
}
分享到:
相关推荐
java读取oracle数据库中clob字段 把oracle数据库中字段类型为clob的字段值以字符串的形式读取出来
把oracle数据库中字段类型为clob的字段值以字符串的形式读取出来
关于在oracle数据库中读取clob大字段问题
CLOB字段处理 对CLOB进行存取的例子
JDBC读写Oracle的CLOB字段
ORACLE中CLOB字段转String类型
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
kettle通过java代码将数据库blob 字段抽取到本地文件
jsp读取大对象CLOB并生成xml文件示例源代码
数据库中clob类型转换的问题 数据库中clob类型转换的问题
CLOB字段类型报错 ORA-01704:文字字符串过长的解决
oracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracleoracle
主要是整合了jdbc处理clob类型的增删改查方法,有需要的同学可以看下
运用Java如何存取Oracle中的CLOB类型字段
该类中包含有多个方法对数据库中的clob字段进行查询、插入、事物处理、批处理、调用存储过程等操作。使用的是myeclipse8.6,oracle11g,测试的时候执行手动建个表xml_buffer,包含id、xmlcontent字段即可,然后在...
ActiveXObject和Clob字段的插入更新
用Hiberate处理CLOB字段 ;通过Hiberate处理CLOB类型的数据;
Oracle如何插入CLOB字段值,附件为简单的示例代码。Oracle如何插入CLOB字段值,附件为简单的示例代码。
介绍了利用Hibernate将一个长字符串转换为流存储至Clob字段中,然后再从Clob字段中读出来,转换为字符串输出的方式