Java知识点总结(JDBC-大文本对象的使用)
@(Java知识点总结)[Java, JDBC]
CLOB(Chaaracter Large Object)
- 用于存储大量的文本数据
- 大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式来处理。而非一般的字段,一次即可读出数据。
Mysql中相关类型:
- TINYTEXT最大长度为255(2^8-1)字符的TEXT列。
- TEXT最大长度为65535(2^16-1)字符的TEXT列。
- MEDIUMTEXT最大长度为16777215(2^24-1)字符的TEXT列。
- LONGTEXT最大长度为4294967295或4GB(2^32-1)字符的TEXT列。
import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.Reader;import java.io.UnsupportedEncodingException;import java.sql.Clob;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;/** * 测试CLOB 文本大对象的使用 * 将字符串和文本内容插入到数据库中的CLOB字段,讲CLOB字段取出来的操作 * @author Administrator * */public class Demo02 { //存 private static void insert(Connection conn){ String sql = "insert into users(NAME,INFO) values(?,?)"; PreparedStatement ps = null; try { ps = conn.prepareStatement(sql); ps.setString(1, "黄晓明"); //将文本内容直接输入到数据库 //ps.setClob(2, new FileReader(new File("E:/b.txt"))); //讲程序中的字符串输入到数据库的CLOB字段中 ps.setClob(2, new BufferedReader( new InputStreamReader(new ByteArrayInputStream("黄晓明是个明星".getBytes("utf-8"))))); ps.execute(); } catch (SQLException | UnsupportedEncodingException e) { e.printStackTrace(); }finally{ DBUtil. close(ps); DBUtil. close(conn); } } //读 private static void read(Connection conn){ String sql = "select * from users where USERID = ?"; PreparedStatement ps = null; ResultSet rs = null; try { ps = conn.prepareStatement(sql); ps.setObject(1, 10); //setObject()可以代替setInt()、setString()等 rs = ps.executeQuery(); while(rs.next()){ Clob clob = rs.getClob("INFO"); Reader r= clob.getCharacterStream(); //通过字符流的方式读取 int temp = 0; while((temp = r.read())!=-1){ System.out.print((char)temp); } } } catch (SQLException | IOException e) { e.printStackTrace(); }finally{ DBUtil.close(rs); DBUtil.close(ps); DBUtil.close(conn); } } public static void main(String[] args) { insert(DBUtil.getConn()); read(DBUtil.getConn()); }}