数据库存取BLOB类型音乐文件的过程及常见错误

数据库存取BLOB类型音乐文件的过程及常见错误


数据库端的准备工作:

新建表,用来存放音乐文件:mymusic
第一列:id 类型:int
第二列:music 类型:blob
在这里插入图片描述


将音乐文件存入数据库

/*** */
package cn.zxm.jsp;import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;/*** @author Miao**/
public class JDBCBlobTest {//通过JDBC存储二进制类型(音乐)//BLOB//存入音乐的内容//1.先通过 pst 的 ? 代替音乐内容//2.在通过		pst.setBinaryStream(2, in, (int)file.length());将上一步的? 代替成 二进制数据流 public static void main(String[] args) throws Exception {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//反射//3.获取数据库连接对象Connectionjava.sql.Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp_jdbc","root", "root");//4.定义sqlString sql = "insert into mymusic  values(?,?)";//5.获取执行sql语句的对象StatementPreparedStatement pst = conn.prepareStatement(sql);pst.setInt(1, 1);//InputStreamReader转换流可以设置编码File file = new File("D:\\goodbye.mp3");//设置BLOB类型,setBinaryStream//字节流InputStream in = new FileInputStream(file);pst.setBinaryStream(2, in, (int)file.length());//执行sql,接受返回结果int count = pst.executeUpdate();//处理结果System.out.println("受影响行数:"+ count);//释放资源in.close();pst.close();conn.close();}
}

JDBCBlobTest.java运行时出现的错误:
在这里插入图片描述
** 1. 这里显示我存的数据超过了数据库存取的最大容量:这里需要修改MySQL数据库的最大容量
解决方法:**

  • SET GLOBAL max_allowed_packet=8*1024*1024;
    将数据库存取的最大容量改为8M
  • show VARIABLES like '%max_allowed_packet%';
    查看数据库存取的最大容量

在这里插入图片描述

问题解决!!

2. 使用BLOB类型进行数据存储,BLOB存储空间不够
在这里插入图片描述

解决完第一个问题后,又出现新的错误,虽然英文不好,但是"Data too long"还是知道的,类型明明是BLOB类型了,怎么存储空间还不够4M吗?然后把错误去百度一搜,发现解决办法都是关于编码的问题,但是音乐文件以二进制形式存取和编码没有关系。于是就想,BLOB不够4M,还有没有其他的比BLOB更大的数据类型,就去Navicat找更高大上的类型,结果,真的有

在这里插入图片描述

后来,查了一下BLOB的最大存储大小:
TinyBlob:255B
Blob:65K
MediumBlob:16M
LongBlob:4G

最后,程序成功运行了

控制台:
在这里插入图片描述

数据库:
在这里插入图片描述

将音乐文件从数据库中取出:

/*** */
package cn.tx.jsp;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;/*** @author 11441**/
public class JDBCBlobReader {//取出音乐的内容public static void main(String[] args) throws Exception {//1.注册驱动Class.forName("com.mysql.jdbc.Driver");//反射//3.获取数据库连接对象Connectionjava.sql.Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsp_jdbc","root", "root");//4.定义sqlString sql = "select music from mymusic where id = ? ";//5.获取执行sql语句的对象StatementPreparedStatement pst = conn.prepareStatement(sql);pst.setInt(1, 1);ResultSet rs = pst.executeQuery();//读取if(rs.next()) {InputStream in = rs.getBinaryStream("music");//通过io流输出//读到哪里OutputStream out = new FileOutputStream("src/music.mp3");byte[] chs = new byte[100];int len = -1;while( (len = in.read(chs)) != -1 ) {//输出,从0开始输出,长度为数组的字长out.write(chs , 0 ,chs.length);}//流操作要closeout.close();in.close();}//8.释放资源rs.close();pst.close();conn.close();}
}

运行后,进行刷新,完成音乐文件的读取
在这里插入图片描述

在这里插入图片描述

播放成功

在这里插入图片描述

如果觉得这篇博客对你有些用处,希望支持一下啦!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Trie可持久化Trie

WARNING:以下代码未经测试,若发现错误,欢迎指出qwq~ Trie树(字典树) 一种简单的数据结构,可存储大量字符串,可在$O(len)$的时间内完成插入,删除,查找等操作。 下面是一个…

视觉的目的是什么?从监督学习到对比学习,回顾CV发展史

来源:AI科技评论作者: 周纵苇知乎摘要:视觉,对于人类或动物来说,似乎是一件稀松平常的事情,我们甚至都不需要去有意识地训练自己,就可以天赋一般地认识世界。对于机器而言,理解图片却…

MVC原理及案例分析

MVC原理及案例分析 关于MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到…

人工智能的鱼与熊掌:精度与可解释性

来源:陈德旺科学网博客链接地址:http://blog.sciencenet.cn/blog-57940-1270913.html 人工智能自1956年诞生之日,就肩负用计算机程序模拟人类(或生物体)智能的初心与使命,从而理解智能的工作原理与运作机制…

MVC与三层架构的联系及三层架构实现学生注册功能

MVC与三层架构的联系及三层架构实现学生注册功能 三层架构的逻辑关系&#xff1a; MVC和三层架构的联系&#xff1a; 三层架构实现学生注册功能的逻辑&#xff1a; 学生注册页面&#xff1a; 输入学生信息&#xff1a; 完成学生注册: 代码实现&#xff1a; add.jsp <% …

MVC5+EF6 入门完整教程11--细说MVC中仓储模式的应用

MVC5EF6 入门完整教程11--细说MVC中仓储模式的应用 原文:MVC5EF6 入门完整教程11--细说MVC中仓储模式的应用摘要&#xff1a; 第一阶段1~10篇已经覆盖了MVC开发必要的基本知识。 第二阶段11&#xff5e;20篇将会侧重于专题的讲解&#xff0c;一篇文章解决一个实际问题。 根据…

Java Web实现信息管理

Java Web实现信息管理 前言&#xff1a; 大二上学期刚学完Oracle&#xff0c;老师就要求用Java语言操作Oracle&#xff0c;当时真的是懵了。回顾自己前两年的生活&#xff0c;大一上学期学习C语言&#xff0c;下学期学习Java&#xff0c;当时教课老师是学硬件的。课上讲一些理…

计算机科学界至今未解决的四大难题

作者&#xff1a;Shalitha Suranga译者&#xff1a;弯月 责编&#xff1a;张文出品&#xff1a;CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;在现实生活中&#xff0c;很多难题的解决方案都用到了计算机科学的基础理论。例如&#xff0c; Git 分布式版本控制系统建立…

按字编址与按字节编址

按字编址与按字节编址 要清楚按字编址和按字节编址的区别&#xff0c;先要知道 比特(bit)&#xff0c;字节(byte)&#xff0c;字(word) 之间的关系。 在计算机系统中&#xff0c;总线以固定大小的一块数据进行传输&#xff0c;这一块的数据也称为字(word)&#xff0c;如今的计…

2021年AI关键趋势,AI芯片初创公司可能发生并购

来源&#xff1a;雷锋网作者&#xff1a;包永刚编译&#xff1a;雷锋网人工智能&#xff08;AI&#xff09;和机器学习仍然是技术决策者、行业人士和投资者关注的重点。标普全球市场财智&#xff08;S&P Intelligence&#xff09;2020 7月发布的调查显示&#xff0c;有58%的…

CPU组成结构

CPU组成结构 CPU总体构图 CPU中央处理器&#xff08;Central Processing Unit&#xff09; CPU的结构框图&#xff1a;CPU内部由ALU&#xff08;算术逻辑单元&#xff09;、CU&#xff08;控制器&#xff09;、寄存器&#xff08;PC、IR、PSW、DR、通用寄存器等&#xff09;、…

每一个科学家的内心都住着一位哲学家(节选)

来源&#xff1a;腾讯大学&#xff08;ID: tencent_university)作者&#xff1a;张首晟&#xff08;斯坦福大学&#xff09;不少科学家的哲学造诣都很高。在哲学中&#xff0c;有着正负对立的世界观&#xff1a;有阴必有阳、有正必有负、有天使就会有魔鬼。这种哲学观念是如何在…

总结下载Spring Framework的jar包

总结下载Spring Framework的jar包 下载官网&#xff1a;Spring官网

ros2中gazebo安装的注意事项

Install From source&#xff08;推荐安装Fortress版本&#xff0c;好像很方便&#xff09; ROS Be sure youve installed ROS Humble (at least ROS-Base). More ROS dependencies will be installed below. Gazebo Install either Edifice, Fortress, or Garden.(没有har…

谷歌对2021年的六个预测:数据和云技术的革命即将到来

来源&#xff1a;AI前线作者&#xff1a;Debanjan Saha译者&#xff1a;平川策划&#xff1a;钰莹预测是充满挑战的&#xff0c;因为具体的预测取决于特定的时间框。但从云应用方面表现出的趋势来说&#xff0c;我们 2020 年看到的一些事情可能预示着 2021 年可能出现的变化。经…

Vue笔记:webpack项目vue启动流程

VUE启动流程 1. package.json 在执行npm run dev的时候&#xff0c;会在当前目录中寻找 package.json 文件, 有点类似 Maven 的 pom.xml 文件&#xff0c;包含项目的名称版本、项目依赖等相关信息。 { # 版本信息"name": "kitty-ui","version":…

哈工大等实现人工肌肉重大突破登上 Science!多国科学家联合实现全新驱动机理...

来源&#xff1a;雷锋网2021 年&#xff0c;机器人已经「成精」了&#xff0c;公然吵架、组团热舞再也不是人类专属。然鹅在很多人心里&#xff0c;机器人还是僵硬、机械甚至冰冷的。即便如此&#xff0c;技术日新月异&#xff0c;柔性机器人快速发展&#xff0c;我们对机器人的…

WOJ 18 动态无向图

一开始我是不会写的&#xff0c;后来点开了题解&#xff1a; 无话可说……那就写吧……然而第一发跑成暴力分&#xff0c;后来加了一个优化&#xff1a;就是在询问里面提到过的边都不用再加了。 然后……然后就过了呀…… 其实还有面向数据的编程的骚操作……既然卡过了那也没什…

AI如何帮助我们理解意识——麻省理工最新大脑研究

来源&#xff1a;ScienceAI编辑&#xff1a;文龙麻省理工学院和麻省总医院的一组研究人员最近发表了一项将社会意识与单个神经元活动联系起来的研究。据悉&#xff0c;这是首次在单神经元级别下找到「心智理论」的证据。测量大量的神经元是神经学的基础。即使是普通的核磁共振成…

计算机操作系统——处理机调度算法

计算机操作系统——处理机调度算法 一、处理机调度的层次和调度算法的目标 1.处理及调度的层次 高级调度&#xff1a;&#xff08;周期较长&#xff0c;大约几分钟一次&#xff09; 又称为长程调度或作业调度 调度对象&#xff1a;作业 功能&#xff1a;根据算法决定将外存中…