使用JdbcUtils得到连接con

java.sql包下的Interface Blob----其实现类SerialBlob

Blob是一个可以存储二进制文件的容器。

BLOB常常是数据库中用来存储二进制文件的字段类型。

MySQL中,BLOB是个类型系列,包括TinyBlob,Blob,MediumBlob,LongBlob,这几个类型之间的唯一区别是在存储文件的最大 大小上不同。

类型   大小(单位:字节)

TinyBlob 最大  255

Blob 最大  65k

MediumBlob  中等 16M

LongBlob 最大 4G

所需数据库结构

  1. //把MP3保存到数据库中
  2. @Test
  3. public void fun() throws Exception{
  4. Connection con=JdbcUtils.getConnection();
  5. String sql="insert into tab_bin values(?,?,?)";
  6. PreparedStatement pstmt=con.prepareStatement(sql);
  7. pstmt.setInt(1, 1);
  8. pstmt.setString(2, "Circus.mp3");
  9. //需要得到blob
  10. /*1.我们有的是文件,目标是Blob
  11. * 2.先把文件变成byte[]
  12. * 3.再使用byte[]创建Blob
  13. * */
  14. //把文件转换成byte[]
  15. byte[] bytes=IOUtils.toByteArray(new FileInputStream("F:/CloudMusic/Circus.mp3"));
  16.  
  17. Blob blob=new SerialBlob(bytes);
  18. //设置参数
  19. pstmt.setBlob(3, blob);
  20.  
  21. pstmt.executeUpdate();
  22. }

从数据库中读MP3数据,然后写到磁盘中

  1. @Test
  2. public void fun2() throws Exception{
  3. Connection con=JdbcUtils.getConnection();
  4. System.out.println(con);
  5. String sql="select * from tab_bin where filename=?";
  6. PreparedStatement pstmt=con.prepareStatement(sql);
  7. pstmt.setString(1, "Circus.mp3");
  8. ResultSet rs= pstmt.executeQuery();
  9. System.out.println("查询成功");
  10. //获取rs中的名为data的数据----数据库中的名
  11. if(rs.next()){
  12. Blob blob=rs.getBlob("data");
  13. /*把Blob变成硬盘上的文件
  14. *
  15. * 1.通过Blob得到输入流对象
  16. * 2.自己创建输出流对象
  17. * 3.把输入流的数据写入到输出流中
  18. * */
  19. InputStream in=blob.getBinaryStream();//读
  20. //写
  21. OutputStream out=new FileOutputStream("G:/金泰妍1.MP3");
  22. IOUtils.copy(in, out);
  23. }

IOUtils是一个类---封装了IO操作的相关类----提供了对流的操作

常用方法

copy这个方法可以拷贝流

  1. copy(inputstream,outputstream)
  2. copy(inputstream,writer)
  3. copy(inputstream,writer,encoding)
  4. copy(reader,outputstream)
  5. copy(reader,writer)
  6. copy(reader,writer,encoding)

copyLarge这个方法适合拷贝大的数据流,比如2G以上。

  1. copyLarge(reader,writer) 默认会用1024*4buffer来读取
  2. copyLarge(reader,writer,buffer)

read从一个流中读取数据

  1. read(inputstream,byte[])
  2. read(inputstream,byte[],offset,length)
  3. //offset是buffer的偏移值,length是读取的长度
  4.  
  5. read(reader,char[])
  6. read(reader,char[],offset,length)

等等方法,见IOUtils类

把MP3保存到数据库中的更多相关文章

  1. 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17

    黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...

  2. XAF:如何让用户在运行时个性化界面并将个性化信息保存到数据库中 win/web/entityframework/xpo

    本主题介绍如何启用管理模型差异(XAFML),并将设置存储在数据库中.   名词解释: 1.模型:XAF中把所有应用程序的结构都用模型来定义,比如列表,有哪些列,名称是什么,对应的字段名是什么,业务对 ...

  3. ASP.NET将Session保存到数据库中

    因为ASP.NET中Session的存取机制与ASP相同,都是保存在进行中, 一旦进程崩溃,所有Session信息将会丢失,所以我采取了将Session信息保存到SQL Server中,尽管还有其它的 ...

  4. JQuery结合Ajax实现双击Table表格,使Table变成可编辑,并保存到数据库中

    本文属于原创,转载请标明出处! 近期在做项目时,要实现通过双击Table表格的TR,使Table行变成可编辑,来实现修改数据并保存到数据库中的功能,无需多说,直接贴代码吧.希望能得到各位同仁指正. f ...

  5. logback.xml的使用,将日志异步保存到数据库中

    想要把日志异步保存到数据库中,首先需要创建一个数据库,然后创建三张固定的表: https://github.com/xiaorenwu-dashijie/logback.git <?xml ve ...

  6. Java中将图片保存到数据库中

    在实际的开发中,我们可能需要将图片.影音等文件直接保存到数据库中,然后通过编程方式将数据读出进行使用.例如将读出的图片数据显示出来,将读出的电影文件播放出来. 二进制数据直接保存到文件和从文件中读出非 ...

  7. 把Execl表格中的数据获取出来保存到数据库中

    比如我们遇到一些需要把execl表格中的数据保存到数据库中,一条一条保存效率底下而且容易出错,数据量少还好,一旦遇到数据量大的时候就会累死个人啊,下面我们就来把execl表格中数据保存到对应的数据库中 ...

  8. 把Dev的excel表格用clientdataset保存到数据库中。

    网上很多,如何把图片.word.excel等保存到数据库中.可是自己就是死活出现异常,百思不得其解.原因找到了,为什么没有去弄明白: 在sql server字段类型中,我把存储字段设成binary,结 ...

  9. Quartz将Job保存在数据库中所需表的说明

    http://blog.iqbon.com/doc/364.html   (将Quartz持久化到数据库的做法)   QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calen ...

随机推荐

  1. ElasticStack系列之九 & master、data 和 client 节点

    在生产环境下,如果不修改elasticsearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题. 默认情况下,elasticsearch 集群中每个节点都有成为主节点的资格,也都存 ...

  2. 【iCore4 双核心板_FPGA】例程一:GPIO输出实验——点亮LED

    实验现象: 三色LED循环点亮. 核心源代码: module led_ctrl( input clk_25m, input rst_n, output fpga_ledr, output fpga_l ...

  3. Centos6.4 编译安装 nginx php

    一. 准备依赖库 安装make: yum -y install gcc automake autoconf libtool make 安装g++: yum install gcc gcc-c++ 二. ...

  4. Python3数字(Number)

    一.数学函数 二.随机数函数 三.三角函数 四.数学常量

  5. X-Frame-Options 配置

    最近在修改ASP老网站,使用是iframe框架部署上去后出现“此内容不能显示在一个框架中”错误 以下错误解决方案是需要配置:X-Frame-Options X-Frame-Options: 他的值有三 ...

  6. 随笔:JS对象无new构造原理

    var myFun = function(words) { if (!(this instanceof myFun)) { return new myFun(words); } this.name = ...

  7. ubuntu apache2下目录结构以及重写规则

    ubuntu apache2下目录结构 在Windows下,Apache的配置文件通常只有一个,就是httpd.conf.但我在Ubuntu Linux上用apt-get install apache ...

  8. 【QT】无需写connect代码关联信号和槽函数

    对于一些简单的事件判别,如点击按钮. 无需写代码关联信号和槽函数. connect(ui->Btnshowhello,SIGNAL(clicked(bool)),this,SLOT(Btnsho ...

  9. SpringBoot------Servlet3.0的注解自定义原生Servlet

    1.添加需要使用的依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://w ...

  10. 【Vue】转-Vue.js经典开源项目汇总

    版权声明:本文为EnweiTech原创文章,未经博主允许不得转载. https://blog.csdn.net/English0523/article/details/88694219 Vue是什么? ...