JAVA读取、写入、更新CLOB字段
2016-07-11 18:22
429 查看
Java代码
/*
--建表语句如下:
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);
}
原文转载 http://wallimn.iteye.com/blog/2176537
/*
--建表语句如下:
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);
}
原文转载 http://wallimn.iteye.com/blog/2176537
相关文章推荐
- eclipse快捷键大全
- Struts2实现文件下载和上传
- 解决EasyUI Form submit和SpringMVC返回JSON在IE中变下载的问题
- java spring定时器(注解)
- myeclipse 连接mysql 提示 unable to create connection.check your url
- java将json字符串转成List/Map实例
- spring mvc 接受多对象的处理
- SpringMVC杂记(十七) HandlerMethodArgumentResolver接口应用example
- SpringMVC中的参数组装:HandlerMethodArgumentResolver
- Java对象之生
- weblogic安装使用: Could not Create the Java Virtual Machine
- Java 科学计算法转普计数法
- Java中的时间和日期(下)
- java集合类(二)List之ArrayList
- SpringMVC设置一个自定义拦截器
- SpringMVC详细运行流程图
- java设计模式学习资料汇总
- Java学习--使用 Math 类操作数据
- Spring MVC 事物配置
- SpringMVC 异常的处理