CLOB–>
Character存储大量文本数据–>以流方式来处理
//---------------------------将文件内容存储到数据库-----------------
package java_274_JDBC_CLOB文本大对象操作_练习;
import java.io.File;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
-
测试CLOB 文本大对象的使用
*/
public class Demo09 {public static void main(String[] args ) {
//声明
Connection conn =null;
PreparedStatement ps =null;try { //加载驱动类 Class.forName("com.mysql.jdbc.Driver"); //连接数据库 conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/testjdbc?useSSL=false&characterEncoding=UTF-8","root","www4152276"); //characterEncoding 字符编码 //插入数据 ps = conn.prepareStatement("insert into t_user (username,myInfo) values (?,?)"); //存放内容 ps.setString(1, "张三"); ps.setClob(2, new FileReader(new File("d:/a.txt")));//读取d盘文件并直接输入数据库中 ps.executeUpdate(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { //关闭遵循先进后关原则;一定要分开关闭,这样出现异常不影响后面的程序执行 if(ps!=null){ try { ps.close();//关闭 } catch (SQLException e) { e.printStackTrace(); } } if(conn!=null){ try { conn.close();//关闭 } catch (SQLException e) { e.printStackTrace(); } } }
}
}
//------------------------------结果----------
//----------------------将字符串输入到数据库CLOB中--------------------------
修改了语句
//-------------------------结果-----------
//---------------将CLOB字段值取出来的操作--------------------------
package java_274_JDBC_CLOB文本大对象操作_练习;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileReader;
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;//查询结果
Reader r = null;
try {
//加载驱动类
Class.forName(“com.mysql.jdbc.Driver”);
//连接数据库
conn = DriverManager.getConnection(
“jdbc:mysql://localhost:3306/testjdbc?useSSL=false&characterEncoding=UTF-8”,“root”,“www4152276”); //characterEncoding 字符编码
/*
//插入数据
ps = conn.prepareStatement(“insert into t_user (username,myInfo) values (?,?)”);
//存放内容
//ps.setString(1, “张三”);
//文件存入数据库
//ps.setClob(2, new FileReader(new File(“d:/a.txt”)));//读取d盘文件并直接输入数据库中//字符串存入数据库;用流方法(不能直接写字符串) //ps.setClob(2, new BufferedReader(new InputStreamReader(new ByteArrayInputStream("aaabbbbb".getBytes())))); //字符串以流的方式存储;先转为字节流在转为字节输入流再转为字符输入流 */ //读取数据库中的数据 ps = conn.prepareStatement("select * from t_user where id=?"); ps.setObject(1, 84064);//84064是数据库中被去数据的id //执行 rs = ps.executeQuery(); while(rs.next()){ Clob c = rs.getClob("myInfo");//传入名字;注意导入的包java.sql.Clob //用IO流 r = c.getCharacterStream(); int temp = 0; while((temp=r.read())!=-1){//判断是否到最后 System.out.print((char)temp);//强制转型 } } //ps.executeUpdate(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { //关闭遵循先进后关原则;一定要分开关闭,这样出现异常不影响后面的程序执行 if(r!=null){ try { r.close();//关闭 } catch (Exception e) { e.printStackTrace(); } } if(ps!=null){ try { ps.close();//关闭 } catch (SQLException e) { e.printStackTrace(); } } if(conn!=null){ try { conn.close();//关闭 } catch (SQLException e) { e.printStackTrace(); } } }
}
}
//-------------------结果-----------