java_274_JDBC_CLOB文本大对象操作_练习

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();
     		}
     	}
     } 
    

    }
    }
    //-------------------结果-----------
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值