java在oracle数据库中怎么插入读取CLOB值

java在oracle数据库中怎么插入读取CLOB值,第1张

参考:

/**

* 写入、更新CLOB字段的代码示例

*/

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)

}

1、插入记录,EMPTY_CLOB(),初始化字段。

2、获取CLOB字段指针,select into for update 或者利用insert 语句的return 选项获取。

3、加载数据,dbms_lob.WRITEAPPEND


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10708997.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存