Java Clob 操作

java操作数据库clob字段的简单例子:

package com.test.db.clob;

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:@localhost: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 test_clob values(1, empty_clob())";
		Statement stm = conn.createStatement();
		stm.execute(sql);
	}
	
	private static void testUpdate() throws SQLException, IOException {
		String sql = "select content from test_clob where id = 1 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(1);//The first position is 1
			w.write("abc");
			w.close();
			c.setString(c.length() + 1, "abc");
			conn.commit();
		}
	}
	
	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();
		}
	}
	
}

输出结果:
clob.getSubString(1, 2) --> ab
clob.getSubString(1, (int)clob.length()) --> abcabc
abcabc

你可能感兴趣的:(java,jdbc)