java 操作clob大字段

特别长的字符串 想存到数据库中,的clob大字段中,大概4000字时报错,字符串太长,原因是sql语句大小不能超过4K,所以报这错,下面是我在网上找到的解决方法

package com.sinocec.model;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.Writer;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ClobTest {

private static Connection conn;

static {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@192.168.1.11:1521:orcl","scott","tiger");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}

public static void main(String[] args) throws SQLException, IOException {
//testInsert();
//testUpdate();
//testRead();
}

private static void testInsert() throws SQLException {
String sql = "insert into TECDESIGNALBUM (td_id,FILENAME,note) values (350,'bb',empty_clob())";
Statement stm = conn.createStatement();
stm.execute(sql);
stm.close();
}

private static void testUpdate() throws SQLException, IOException {
String bigdata = "这是一个大字段。。。";
String sql = "select note from TECDESIGNALBUM where td_id = 350 for update";
Statement stm = conn.createStatement();
ResultSet rs = stm.executeQuery(sql);
while (rs.next()) {
Clob c = rs.getClob(1);
c.truncate(0);// clear
Writer w = c.setCharacterStream(1L);//The first position is 1
w.write(bigdata);
w.close();
c.setString(c.length(), bigdata);
conn.commit();
}
conn.close();
}

private static void testRead() throws SQLException, IOException {
String sql = "select content from test_clob where id = 1";
PreparedStatement pstm = conn.prepareStatement(sql);
ResultSet rs = pstm.executeQuery();
while (rs.next()) {
Clob clob = rs.getClob("content");
System.out.println("clob.getSubString(1, 2) --> " + clob.getSubString(1, 2));
System.out.println("clob.getSubString(1, (int)clob.length()) --> " +
clob.getSubString(1, (int)clob.length()));
BufferedReader r = new BufferedReader(clob.getCharacterStream());
String s;
while ((s = r.readLine()) != null) {
System.out.println(s);
}
r.close();
}
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值