深入分析JavaWeb Item29 -- 使用JDBC处理大数据(MySql + Oracle)(2)

        reader = new FileReader(file);
        st.setCharacterStream(1, reader,(int) file.length());
        int num = st.executeUpdate();
        if(num>0){
            System.out.println("插入成功!!");
        }
        //关闭流
        reader.close();
    }catch (Exception e) {
        e.printStackTrace();
    }finally{
        JdbcUtils.release(conn, st, rs);
    }
}

/\*\*

* @Method: read
* @Description: 读取数据库中的大文本数据
* @Anthor:孤傲苍狼
*
*/
@Test
public void read(){
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
try{
conn = JdbcUtils.getConnection();
String sql = “select resume from testclob where id=2”;
st = conn.prepareStatement(sql);
rs = st.executeQuery();

        String contentStr ="";
        String content = "";
        if(rs.next()){
            //使用resultSet.getString("字段名")获取大文本数据的内容
            content = rs.getString("resume");
            //使用resultSet.getCharacterStream("字段名")获取大文本数据的内容
            Reader reader = rs.getCharacterStream("resume");
            char buffer[] = new char[1024];
            int len = 0;
            FileWriter out = new FileWriter("D:\\1.txt");
            while((len=reader.read(buffer))>0){
                contentStr += new String(buffer);
                out.write(buffer, 0, len);
            }
            out.close();
            reader.close();
        }
        System.out.println(content);
        System.out.println("-----------------------------------------------");
        System.out.println(contentStr);
    }catch (Exception e) {
        e.printStackTrace();
    }finally{
        JdbcUtils.release(conn, st, rs);
    }
}

}


### 四、使用JDBC处理MySQL的二进制数据


  对于MySQL中的BLOB类型,可调用如下方法设置:



PreparedStatement. setBinaryStream(i, inputStream, length);


  对MySQL中的BLOB类型,可调用如下方法获取:



InputStream in = resultSet.getBinaryStream(String columnLabel);
InputStream in = resultSet.getBlob(String columnLabel).getBinaryStream();


##### **4.1、 测试范例**


  1、编写SQL测试脚本



create table testblob
(
id int primary key auto_increment,
image longblob
);


  2、编写测试代码如下:



package me.gacl.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import me.gacl.utils.JdbcUtils;
import org.junit.Test;

/**
* @ClassName: JdbcOperaClob
* @Description: 使用JDBC操作MySQL的二进制数据(例如图像、声音、二进制文)
* @author: 孤傲苍狼
* @date: 2014-9-19 下午10:10:04
*
*/
public class JdbcOperaBlob {

/\*\*

* @Method: add
* @Description:向数据库中插入二进制数据
* @Anthor:孤傲苍狼
*
*/
@Test
public void add(){
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
try{
conn = JdbcUtils.getConnection();
String sql = “insert into testblob(image) values(?)”;
st = conn.prepareStatement(sql);
//这种方式获取的路径,其中的空格会被使用“%20”代替
String path = JdbcOperaBlob.class.getClassLoader().getResource(“01.jpg”).getPath();
//将“%20”替换会空格
path = path.replaceAll(“%20”, " ");
File file = new File(path);
FileInputStream fis = new FileInputStream(file);//生成的流
st.setBinaryStream(1, fis,(int) file.length());
int num = st.executeUpdate();
if(num>0){
System.out.println(“插入成功!!”);
}
fis.close();
}catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUtils.release(conn, st, rs);
}

  • 27
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值