把MP3保存到数据库中
使用JdbcUtils得到连接con
java.sql包下的Interface Blob----其实现类SerialBlob
Blob是一个可以存储二进制文件的容器。
BLOB常常是数据库中用来存储二进制文件的字段类型。
MySQL中,BLOB是个类型系列,包括TinyBlob,Blob,MediumBlob,LongBlob,这几个类型之间的唯一区别是在存储文件的最大 大小上不同。
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65k
MediumBlob 中等 16M
LongBlob 最大 4G
所需数据库结构
//把MP3保存到数据库中
@Test
public void fun() throws Exception{
Connection con=JdbcUtils.getConnection();
String sql="insert into tab_bin values(?,?,?)";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setInt(1, 1);
pstmt.setString(2, "Circus.mp3");
//需要得到blob
/*1.我们有的是文件,目标是Blob
* 2.先把文件变成byte[]
* 3.再使用byte[]创建Blob
* */
//把文件转换成byte[]
byte[] bytes=IOUtils.toByteArray(new FileInputStream("F:/CloudMusic/Circus.mp3")); Blob blob=new SerialBlob(bytes);
//设置参数
pstmt.setBlob(3, blob); pstmt.executeUpdate();
}
从数据库中读MP3数据,然后写到磁盘中
@Test
public void fun2() throws Exception{
Connection con=JdbcUtils.getConnection();
System.out.println(con);
String sql="select * from tab_bin where filename=?";
PreparedStatement pstmt=con.prepareStatement(sql);
pstmt.setString(1, "Circus.mp3");
ResultSet rs= pstmt.executeQuery();
System.out.println("查询成功");
//获取rs中的名为data的数据----数据库中的名
if(rs.next()){
Blob blob=rs.getBlob("data");
/*把Blob变成硬盘上的文件
*
* 1.通过Blob得到输入流对象
* 2.自己创建输出流对象
* 3.把输入流的数据写入到输出流中
* */
InputStream in=blob.getBinaryStream();//读
//写
OutputStream out=new FileOutputStream("G:/金泰妍1.MP3");
IOUtils.copy(in, out);
}
IOUtils是一个类---封装了IO操作的相关类----提供了对流的操作
常用方法
copy这个方法可以拷贝流
copy(inputstream,outputstream)
copy(inputstream,writer)
copy(inputstream,writer,encoding)
copy(reader,outputstream)
copy(reader,writer)
copy(reader,writer,encoding)
copyLarge这个方法适合拷贝大的数据流,比如2G以上。
copyLarge(reader,writer) 默认会用1024*4的buffer来读取
copyLarge(reader,writer,buffer)
read从一个流中读取数据
read(inputstream,byte[])
read(inputstream,byte[],offset,length)
//offset是buffer的偏移值,length是读取的长度 read(reader,char[])
read(reader,char[],offset,length)
等等方法,见IOUtils类
把MP3保存到数据库中的更多相关文章
- 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17
黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...
- XAF:如何让用户在运行时个性化界面并将个性化信息保存到数据库中 win/web/entityframework/xpo
本主题介绍如何启用管理模型差异(XAFML),并将设置存储在数据库中. 名词解释: 1.模型:XAF中把所有应用程序的结构都用模型来定义,比如列表,有哪些列,名称是什么,对应的字段名是什么,业务对 ...
- ASP.NET将Session保存到数据库中
因为ASP.NET中Session的存取机制与ASP相同,都是保存在进行中, 一旦进程崩溃,所有Session信息将会丢失,所以我采取了将Session信息保存到SQL Server中,尽管还有其它的 ...
- JQuery结合Ajax实现双击Table表格,使Table变成可编辑,并保存到数据库中
本文属于原创,转载请标明出处! 近期在做项目时,要实现通过双击Table表格的TR,使Table行变成可编辑,来实现修改数据并保存到数据库中的功能,无需多说,直接贴代码吧.希望能得到各位同仁指正. f ...
- logback.xml的使用,将日志异步保存到数据库中
想要把日志异步保存到数据库中,首先需要创建一个数据库,然后创建三张固定的表: https://github.com/xiaorenwu-dashijie/logback.git <?xml ve ...
- Java中将图片保存到数据库中
在实际的开发中,我们可能需要将图片.影音等文件直接保存到数据库中,然后通过编程方式将数据读出进行使用.例如将读出的图片数据显示出来,将读出的电影文件播放出来. 二进制数据直接保存到文件和从文件中读出非 ...
- 把Execl表格中的数据获取出来保存到数据库中
比如我们遇到一些需要把execl表格中的数据保存到数据库中,一条一条保存效率底下而且容易出错,数据量少还好,一旦遇到数据量大的时候就会累死个人啊,下面我们就来把execl表格中数据保存到对应的数据库中 ...
- 把Dev的excel表格用clientdataset保存到数据库中。
网上很多,如何把图片.word.excel等保存到数据库中.可是自己就是死活出现异常,百思不得其解.原因找到了,为什么没有去弄明白: 在sql server字段类型中,我把存储字段设成binary,结 ...
- Quartz将Job保存在数据库中所需表的说明
http://blog.iqbon.com/doc/364.html (将Quartz持久化到数据库的做法) QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calen ...
随机推荐
- 菜鸟教程之工具使用(六)——让Maven项目直接在eclipse内部的Tomcat中运行
Hello,大家好,好久不见!最近终于安定下来了,可以静下心来写东西了.先写篇简单的,找找感觉.工具系列的本身就比较简单,没什么技术含量.因为说到底,工具只是辅助我们工作的,知道怎么用,然后剩下的就是 ...
- 开源CFD并非万金油
今天有网友在群里讨论开发CFD软件的事情,众说纷纭,有网友提到"没有必要开发CFD软件了,直接使用开源OpenFOAM就行".但个人认为这说法还是有一些需要商榷的地方,开源软件也不 ...
- 【转】python实战——教你用微信每天给女朋友说晚安
但凡一件事,稍微有些重复.我就考虑怎么样用程序来实现它. 这里给各位程序员朋友分享如何每天给朋友定时微信发送”晚安“,故事,新闻,等等··· ··· 最好运行在服务器上,这样后台挂起来更方便. #!/ ...
- MySQL5.7.19 服务挂掉 自动关闭 mysqld got exception 0xc000001d win 2008R2
在mysql 官网看到mysqld got exception 0xc000001dThis error message occurs because you are also using a CPU ...
- 修改torndb库为依赖pymysql,使其适应python3,一个更简单的操作数据库的类。
1.python的MySQLdb和pymysql是两个基本数据库操作包,MySQLdb安装很麻烦,要有c++相关环境,python3也安装不了. python3一般安装pymysql,此包与MySQL ...
- [Tensorflow] Object Detection API - retrain mobileNet
前言 一.专注话题 重点话题 Retrain mobileNet (transfer learning). Train your own Object Detector. 这部分讲理论,下一篇讲实践. ...
- [Artoolkit] Framework Analysis of nftSimple
What is nftSimple? Loads NFT dataset names from a configuration file. The example uses the “Pinball. ...
- asp.net mvc 3.0 知识点整理 ----- (4).asp.net mvc 3 和asp.net mvc 4 对比
asp.net mvc的版本更新很快,每个版本都在前一个版本的基础上,进行性能的优化和功能的完善和提升. 以下,便是我对比了下两个版本,发现最基本的差异.(更新补充中..) 一.关于配置类Global ...
- react学习笔记(二)编写第一个react组件
继续上一节课的内容,打开App.js:会看到如下代码: import React, { Component } from 'react'; //在此文件中引用React,以及reat的组件类 imp ...
- 《Python3网络爬虫开发实战》
推荐:★ ★ ★ ★ ★ 第1章 开发环境配置 第2章 网页基础知识 第3章 网络爬虫基础 第4章 基本库的使用 第5章 解析库的使用 第6章 数据存储 第7章 Ajax数据爬取 第8章 动态渲染页面 ...