事先在MySQL中准备好表:
CREATE TABLE userclob(
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
note LONGTEXT
);
一、写入Clob数据
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class ClobDemo01{
//MySQL数据库驱动
public static final String DBDRIVER="com.mysql.cj.jdbc.Driver";
//MySQL数据库的连接地址
public static final String DBURL="jdbc:mysql://localhost:3306/mldn?useSSL=false&serverTimezone=UTC";
//MySQL数据库的连接用户名
public static final String DBUSER="root";
//MySQL数据库的连接密码
public static final String DBPASS="root";
public static void main(String[] args) throws Exception{
//1.加载数据库驱动
Class.forName(DBDRIVER);
//2.获取数据库连接
Connection conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
//3.实例化PreparedStatement对象,并且设置参数
String sql="INSERT INTO userclob(name,note) VALUES(?,?)";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setString(1,"张三");
File f=new File("e:"+File.separator+"demo.txt");
InputStream input=new FileInputStream(f);
pstmt.setAsciiStream(2,input,(int)f.length());//其中三个参数分别为:位置,输入流,文件长度
//4.执行executeUpdate()操作
pstmt.executeUpdate();
//5.关闭数据库连接
pstmt.close();
conn.close();
}
}
步骤:
1.加载数据库驱动
Class.forName(dbdriver);
2.获取数据库连接
Connection conn=DriverManager.getConnection(url,user,pass);
3.实例化PreparedStatement对象
PreparedStatement pstmt=conn.prepareStatement(sql);
4.写入Clob数据
pstmt.setAsciiStream(columnIndex,inputStream,fileLength);
pstmt.executeUpdate();
5.关闭数据库连接
pstmt.close();
conn.close();
二、读取Clob数据
(1)使用getAsciiStream()读取
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.io.InputStream;
import java.sql.ResultSet;
import java.util.Scanner;
public class ClobDemo02{
//MySQL数据库驱动
public static final String DBDRIVER="com.mysql.cj.jdbc.Driver";
//MySQL数据库的连接地址
public static final String DBURL="jdbc:mysql://3306:localhost:3306/mldn?useSSL=false&serverTimezone=UTC";
//MySQL数据库的连接用户名
public static final String DBUSER="root";
//MySQL数据库的连接密码
public static final String DBPASS="root";
public static void main(String[] args) throws Exception{
//1.加载数据库驱动
Class.forName(DBDRIVER);
//2.获取数据库连接
Connection conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
//3.实例化PreparedStatement
String sql="SELECT name,note FROM userclob WHERE id=?";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,1);
//4.获取结果集,并输出数据
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
//输出名字
String name=rs.getString(1);
System.out.println("姓名:"+name);
//输出大数据文本
StringBuffer note=new StringBuffer();
InputStream input=rs.getAsciiStream(2);
Scanner scan=new Scanner(input);
scan.useDelimiter("\r\n");
while(scan.hasNext()){
note.append(scan.next()).append("\n");
}
System.out.println("内容:"+note);
input.close();
}
//5.关闭数据库连接
pstmt.close();
conn.close();
}
}
步骤:
1.加载数据库驱动
Class.forName(DBDRIVER);
2.获取数据库连接
Connection conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
3.实例化PreparedStatement对象
PreparedStatement pstmt=conn.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
4.获取Clob文本的输入流并进行其他操作
InputStream input=rs.getAsciiStream(colIndex);
5.关闭数据库连接
pstmt.close();
conn.close();
(2)使用getClob()读取内容
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Clob;
public class ClobDemo03{
//MySQL的数据库驱动
public static final String DBDRIVER="com.mysql.cj.jdbc.Driver";
//MySQL数据库的连接地址
public static final String DBURL="jdbc:mysql://localhost:3306/mldn?useSSL=false&serverTimezone=UTC";
//MySQL数据库的连接用户名
public static final String DBUSER="root";
//MySQL数据库的连接密码
public static final String DBPASS="root";
public static void main(String[] args) throws Exception{
//1.加载数据库驱动
Class.forName(DBDRIVER);
//2.获取数据库连接
Connection conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
//3.实例化PreparedStatement对象
String sql="SELECT name,note FROM userclob WHERE id=?";
PreparedStatement pstmt=conn.prepareStatement(sql);
pstmt.setInt(1,2);
//4.获取结果集,并输出数据
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
String name=rs.getString("name");
System.out.println("姓名:"+name);
Clob c=rs.getClob("note");
String note=c.getSubString(1,(int)c.length());
System.out.println("内容:"+note);
c.truncate(100);
System.out.println("部分读取内容:"+c.getSubString(1,(int)c.length()));
}
//5.关闭数据库连接
pstmt.close();
conn.close();
}
}
步骤:
1.加载数据库驱动
Class.forName(DBDRIVER);
2.获取数据库连接
Connection conn=DriverManager.getConnection(DBURL,DBUSER,DBPASS);
3.实例化PreparedStatement对象
PreparedStatement pstmt=conn.prepareStatement(sql);
4.获取结果集,并输出数据
ResultSet rs=pstmt.executeQuery();
Clob c=rs.getString("note");
String note=c.getSubString(1,(int)c.length());
5.关闭数据库连接
pstmt.close();
conn.close();