JDBC(五)大数据

9 篇文章 0 订阅
8 篇文章 0 订阅

JDBC中的大数据是指能存储在数据库中的大的的字节数据,或是大的字符数据。

一下是SQL中提供用来保存大数据类型

类型

长度

Tinyblob

28--1B(256B)

Blob

216-1B(64K)

Mediumblob

224-1B(16M)

Longblob

232-1B(4G)

Tinyclob

28--1B256B

Clob

216-1B64K

Mediumclob

224-1B16M

Longclob

232-1B4G

 但是上面这些类型中,mysql没有提供tinyclob、clob、mediumclob、longclob四种类型,而是使用如下四种类型来处理文本大数据:

类型

长度

Tinytext

28--1B(256B)

Text

216-1B(64K)

Mediumtext

224-1B(16M)

Longtext

232-1B(4G)

 

下面通过向MySQL插入MP4文件作为实例:

操作之前需要先对MySQL配置文件进行设置一下,Windows中是my.ini文件,Linux中是my.cnf文件,添加:

max_allowed_packet=10485760

这是允许最大文件大小,可以根据自己需要设置。

添加一个工具类 common-io-jar包

首次在数据库中创建bigDate表

create table bigDate(
	id int auto_increment,
	datename varchar(100),
	date MEDIUMBLOB,
	PRIMARY key(id)
);

 测试类:test.java

public class test {

    //@Test
    public void fun1() throws Exception {

        //获取mysql 服务器的连接

        Connection cn= jdbcUtils.getConnection();

        String sql="insert into bigDate(datename,`date`) values(?,?)";
        PreparedStatement ps=cn.prepareStatement(sql);


        //将文件以转换成byte[]对象
        byte [] bytes= IOUtils.toByteArray(new FileInputStream("G:/HTML5 简介.mp4"));

        //创建一个blob对象,
        Blob blob=new SerialBlob(bytes);


        ps.setString(1,"HTML5 简介.mp4");
        ps.setBlob(2,blob);

        //执行
        ps.executeUpdate();


    }


    @Test
    public void fun2() throws Exception {

        //获取mysql 服务器的连接

        Connection cn= jdbcUtils.getConnection();

        String sql="select * from  bigDate";
        PreparedStatement ps=cn.prepareStatement(sql);



        ResultSet rs=ps.executeQuery();
        while(rs.next()){
            /**
             * 1、获取Blob对象文件
             * 2、将blob文件转化成inputstream输入流
             * 3、创建输出流,将输出流写入输入流
             */

            Blob blob=rs.getBlob("date");
            //得到输入流
            InputStream in=blob.getBinaryStream();
            //创建输出流
            OutputStream out=new FileOutputStream("G:/123.mp4");
            //将输入流文件,写入到输出流中
            IOUtils.copy(in,out);

        }

    }

}

其中jdbc工具类可以参考JDBC学习(四)时间类型文章中的代码

结果显示

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值