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());
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。