JDBC(五)大数据

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学习(四)时间类型文章中的代码

结果显示

猜你喜欢

转载自blog.csdn.net/SICAUliuy/article/details/88791137