当前位置: 首页 > wzjs >正文

游戏点卡平台网站开发宁夏建设银行官方网站

游戏点卡平台网站开发,宁夏建设银行官方网站,正规接单赚佣金的平台,百度2023免费下载目录 一、 MySql Blob类型简介 1. Mysql中的Blob类型 2. Blob类型使用的注意事项 二. 插入Blob类型数据 1. 创建表 2. 通过PreparedStatement存储Blob类型数据 三. 解除文件大小限制 四、 读取Blob类型数据 前言 本文来讲解JDBC中的Blob类型 个人主页:艺杯羹…

目录

一、 MySql Blob类型简介

1. Mysql中的Blob类型

2. Blob类型使用的注意事项

二. 插入Blob类型数据

1. 创建表

2. 通过PreparedStatement存储Blob类型数据

三. 解除文件大小限制

四、 读取Blob类型数据


前言

本文来讲解JDBC中的Blob类型

个人主页:艺杯羹

系列专栏:JDBC

一、 MySql Blob类型简介

Blob(全称:Binary Large Object 二进制大对象)。在MySql中,Blob是一个二进制的用来存储图片,文件等数据的数据类型。操作Blob类型的数据必须使用PreparedStatement
因为Blob类型的数据无法使用字符串拼接。大多数情况,并不推荐直接把文件存放在 MySQL 数据库中
但如果应用场景是文件与数据高度耦合,或者对文件安全性要求较高的,那么将文件与数据存放在一起,即安全,又方便备份和迁移。
会占用存储数据文件的空间,所以不常用

1. Mysql中的Blob类型

MySql中有四种Blob类型,它们除了在存储的最大容量上不同,其他是一致的

类型

大小

TinyBlob

最大255字节

Blob

最大65K

MediumBlob

最大16M

LongBlob

最大4G

2. Blob类型使用的注意事项

  • 实际使用中根据需要存入的数据大小定义不同的Blob类型。
  • 如果存储的文件过大,数据库的性能会下降。

结合文件的综合来考虑

二. 插入Blob类型数据

1. 创建表

create table `movie` (`movieid` int(11) not null auto_increment,`moviename` varchar(30) default null,`poster` mediumblob,primary key (`movieid`)
) engine=innodb default charset=utf8;

2. 通过PreparedStatement存储Blob类型数据

上面介绍过了,操作Blob类型的数据必须使用PreparedStatement,所以这里用PreparedStatement来实现

public class BlobTest {// 向Movie表中插入数据public void insertMovie(String moviename, InputStream is){// 声明数据库连接对象,用于与数据库建立连接Connection conn = null;// 声明预编译语句对象,用于执行 SQL 语句PreparedStatement ps = null;try{// 获取连接// 调用 JdbcUtils 工具类的 getConnection 方法获取数据库连接conn = JdbcUtils.getConnection();// 创建PreparedStatement对象// 使用预编译的方式创建 SQL 插入语句,避免 SQL 注入风险ps = conn.prepareStatement("insert into movie values(default,?,?)");// 绑定参数// 为 SQL 语句中的第一个占位符绑定电影名称参数ps.setString(1,moviename);// 为 SQL 语句中的第二个占位符绑定输入流参数,用于插入二进制数据(如图片)ps.setBlob(2,is);// 执行SQL// 执行插入操作,并返回受影响的行数ps.executeUpdate();}catch(Exception e){// 若发生异常,打印异常堆栈信息,方便调试e.printStackTrace();}finally{// 调用 JdbcUtils 工具类的 closeResource 方法关闭预编译语句和数据库连接,释放资源JdbcUtils.closeResource(ps,conn);}}public static void main(String[] args) throws FileNotFoundException {// 创建 BlobTest 类的实例对象BlobTest bt = new BlobTest();// 创建读取文件的IO流// 创建一个文件输入流,用于读取指定路径下的图片文件InputStream is = new FileInputStream(new File("d:/1.jpg"));// 调用 insertMovie 方法,插入电影名称和图片数据到数据库bt.insertMovie("战狼",is);}
}

三. 解除文件大小限制

虽然MediumBlob允许保存最大值为16M,但MySql中默认支持的容量为4194304即4M。我们可以通过修改Mysql的my.ini文件中max_allowed_packet属性扩大支持的容量,修改完毕后需要重启MySql服务

文件位置
C:\ProgramData\MySQL……


右击使用记事本打开
再使用 快捷键 ctrl + F 输入:max_allowed_packet
来快速定位到这里

这里可以看到,默认是4M的,因此修改这里即可

四、 读取Blob类型数据

 public void selectMovieById(int movieid){// 声明数据库连接对象,用于与数据库建立连接Connection conn =null;// 声明预编译语句对象,用于执行 SQL 语句PreparedStatement ps = null;// 声明结果集对象,用于存储查询结果ResultSet rs = null;try{// 获取连接conn =JdbcUtils.getConnection();// 创建PreparedStatement对象ps = conn.prepareStatement("select * from movie where movieid = ?");// 绑定参数// 为 SQL 语句中的第一个占位符绑定影片 ID 参数ps.setInt(1,movieid);// 执行sql// 执行查询操作,将查询结果存储在 ResultSet 对象中rs = ps.executeQuery();// 遍历结果集while(rs.next()){// 从结果集中获取 movieid 列的值并赋值给变量 idint id = rs.getInt("movieid");// 从结果集中获取 moviename 列的值并赋值给变量 nameString name = rs.getString("moviename");// 打印影片 ID 和影片名称System.out.println(id+" "+name);//获取blob类型的数据// 从结果集中获取 poster 列的 Blob 类型数据Blob blob = rs.getBlob("poster");//获取能够从Blob类型的列中读取数据的IO流// 从 Blob 对象中获取二进制输入流,用于读取图片数据InputStream is = blob.getBinaryStream();// 创建文件输出字节流对象// 创建一个文件输出流,用于将图片数据写入到本地文件OutputStream os = new FileOutputStream(id+"_"+name+".jpg");//操作流完成文件的输出处理// 定义一个字节数组作为缓冲区,用于存储从输入流读取的数据byte[] buff = new byte[1024];// 用于存储每次从输入流读取的字节数int len;// 循环从输入流读取数据到缓冲区,直到读取完所有数据while((len = is.read(buff)) != -1){// 将缓冲区中的数据写入到输出流os.write(buff,0,len);}// 刷新输出流,确保所有数据都被写入到文件os.flush();// 关闭输入流,释放资源is.close();// 关闭输出流,释放资源os.close();}}catch(Exception e){// 若发生异常,打印异常堆栈信息,方便调试e.printStackTrace();}finally{// 调用 JdbcUtils 工具类的 closeResource 方法关闭结果集、预编译语句和数据库连接,释放资源JdbcUtils.closeResource(rs,ps,conn);}
}

到此,就讲解完了Blob类型的讲解,希望能够帮助到你😊


文章转载自:

http://xJGTBJDx.bspLf.cn
http://TRPgO6cP.bspLf.cn
http://GozmrXV1.bspLf.cn
http://bfTK6DM0.bspLf.cn
http://fnbYm5Y5.bspLf.cn
http://l5JeF6SD.bspLf.cn
http://ZAsfayKf.bspLf.cn
http://tomeUSsi.bspLf.cn
http://63oIfldw.bspLf.cn
http://QcHLf7PH.bspLf.cn
http://Sbmpfk7H.bspLf.cn
http://4oXhZ3S8.bspLf.cn
http://HwZQHywq.bspLf.cn
http://SkHNJ8KY.bspLf.cn
http://4diImkcF.bspLf.cn
http://UjC0TrFJ.bspLf.cn
http://SSvvADos.bspLf.cn
http://36nKj0ZM.bspLf.cn
http://tHGj08EQ.bspLf.cn
http://djk0JwUc.bspLf.cn
http://tQtzo6q4.bspLf.cn
http://MqH4Wc47.bspLf.cn
http://FiiG2XMh.bspLf.cn
http://smZ15UxR.bspLf.cn
http://nYIkjt2y.bspLf.cn
http://T6k8D26v.bspLf.cn
http://VkJH7uK8.bspLf.cn
http://VWqTxVUu.bspLf.cn
http://SeU27Tsj.bspLf.cn
http://cgt7g8sA.bspLf.cn
http://www.dtcms.com/wzjs/738035.html

相关文章:

  • 导购网站怎么做织梦做的相亲网站
  • 临西网站建设企业文化展厅设计方案
  • 网页与网站的关系性男女做视频网站
  • 嘉兴网站建设解决方案一个好的网站怎样布局
  • 做网站用百度地图和天地图seo网站打开慢
  • html5企业网站案例上海民营企业500强名单
  • 网站空间哪家做的好建设网站有哪些步骤
  • 网站霸屏对网站好吗建设局网站招聘
  • 安康鼎盛网站建设广州营销型网站建设
  • 网站后台别人制作推广计划名称
  • 企业网站seo多少钱新手学做网站看什么书
  • 网页设计接私单的网站青年汇网站开发公司
  • 刚做的网站怎么快速搜索到极速网站开发
  • 做网站需要的参考文献外贸建站及推广
  • 中移建设 公司 网站政务网站信息化建设情况
  • 全屏网站是什么意思wordpress redis 插件
  • 珠宝类网站模板wordpress多站点 用户同步
  • 2019流行做什么网站网站phpcms移动端网站怎么做
  • 什么是网站运营推广专业设计笔记本电脑
  • 如何自己设置网站西安网页设计培训班费用
  • 怎样设计卖奖的网站电子商务网站建设实训总结
  • 北京网站建设公司册队徽logo在线设计
  • 小企业网站建设方案网站建设的成本分析
  • 如何做手机网站嵊州网站建设
  • 电影网站建设需要什么软件成都网站建设服务密需湖南岚鸿案例
  • 网站开发好后要做什么wordpress用户后台权限
  • 徐州网站开发兼职聊城网站设计公司
  • 从代码角度分析网站怎么做淘宝网站建设目标是什么
  • 网站建设总体规划包括哪些商洛做网站的公司
  • 收费搭建网站需要优化的网站有哪些