CLOB(Character Large Object)
用于存储大量的文本数据
大字段有些特殊,不同数据库处理的方式不一样,大字段的操作常常是以流的方式来处理的。
测试CLOB 文本大对象的使用
* 包含:将字符串、文本内容插入数据库中的CLOB字段、将CLOB字段值取出来操作
package cn.dym01;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
* 测试CLOB 文本大对象的使用
* 包含:将字符串、文本内容插入数据库中的CLOB字段、将CLOB字段值取出来操作
*
*/
public class Demo09 {
public static void main(String[] args) {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs=null;
try {
//加载驱动类
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","123456");
ps=conn.prepareStatement("insert into t_user (username,myInfo) values (?,?)");
ps.setString(1, "止小兮");
// ps.setClob(2, new FileReader(new File("d://a.txt"))); //将文本文件内容直接输入到数据库中
//将程序中的字符串输入到数据库的CLOB字段中
// ps.setClob(2, new BufferedReader(new InputStreamReader(new ByteArrayInputStream("aaaabbbbbb".getBytes()))));
// ps.executeUpdate();
ps=conn.prepareStatement("select * from t_user where id=?");
ps.setObject(1, 21437);
rs=ps.executeQuery();
while(rs.next()) {
Clob c=rs.getClob("myInfo");
Reader r=c.getCharacterStream();
int temp=0;
try {
while((temp=r.read())!=-1) {
System.out.print((char)temp);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
// } catch (FileNotFoundException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
}
}