1. MySQL支持的二进制数据类型:tinyblob, blob, mediumblob和longblob。

2. JDBC中我们用PrepareStatement的SetBlob和GetBlob获取和设置二进制数据。

3. 新建一个JDBC_BLOB工程, 使用我们之前的JDBCUtil.java和jdbc.properties属性文件, 同时在Resources目录下存放一个图片

4. 创建BlobDao.java接口

package com.lywgames.dao;public interface BlobDao {public void createTable();public void insert(String filePath);public void findAll();public void deleteTable();
}

5. 创建BlobDaoImpl.java来对二进制数据进行存储和获取

package com.lywgames.dao.impl;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.lywgames.dao.BlobDao;
import com.lywgames.util.JDBCUtil;public class BlobDaoImpl implements BlobDao {@Overridepublic void createTable() {Connection conn = null;PreparedStatement ps = null;try {conn = JDBCUtil.getConn();ps = conn.prepareStatement("create table photos(id int(11) not null auto_increment, photo blob, primary key(id))");ps.execute();} catch (SQLException e) {e.printStackTrace();} finally {JDBCUtil.release(conn, ps);}}@Overridepublic void insert(String filePath) {Connection conn = null;PreparedStatement ps = null;try {conn = JDBCUtil.getConn();ps = conn.prepareStatement("insert into photos values(null, ?)");ps.setBlob(1, new FileInputStream(filePath));ps.executeUpdate();} catch (SQLException | IOException e) {e.printStackTrace();} finally {JDBCUtil.release(conn, ps);}}@Overridepublic void findAll() {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;try {conn = JDBCUtil.getConn();ps = conn.prepareStatement("select photo from photos");rs = ps.executeQuery();int length = -1;byte[] buffer = new byte[1024 * 10];while(rs.next()) {Blob blob = rs.getBlob(1);InputStream is = blob.getBinaryStream();FileOutputStream fos = new FileOutputStream("Resources/" + System.currentTimeMillis() + ".jpg");while((length = is.read(buffer, 0, buffer.length)) != -1) {fos.write(buffer, 0, length);}fos.flush();fos.close();is.close();}} catch (SQLException | IOException e) {e.printStackTrace();} finally {JDBCUtil.release(conn, ps, rs);}}@Overridepublic void deleteTable() {Connection conn = null;PreparedStatement ps = null;try {conn = JDBCUtil.getConn();ps = conn.prepareStatement("drop table photos");ps.execute();} catch (SQLException e) {e.printStackTrace();} finally {JDBCUtil.release(conn, ps);}}
}

6. 使用BlobDaoImpl类

package com.lywgames.myjdbc;import com.lywgames.dao.BlobDao;
import com.lywgames.dao.impl.BlobDaoImpl;public class MyJDBC {public static void main(String[] args) {BlobDao blobDao = new BlobDaoImpl();blobDao.createTable();blobDao.insert("Resources/1.jpg");blobDao.findAll();blobDao.deleteTable();}
}

7. 运行项目在Resources目录下多了一个图片。注: eclipse里查看图片不正常, 尝试去文件系统里查看。

029_jdbc-mysql二进制数据相关推荐

  1. mysql二进制日志文件差不多_mysql数据同步-基于二进制日志文件和position复制点的方式...

    mysql的binlog日志有三种格式,分别为statement,mixed,以及row. 1.Statement:每一条会修改数据的sql都会记录在binlog中 优缺点:1)不用记录每一行的变化, ...

  2. mysql 二进制查询_MySql如何插入和查询二进制数据_MySQL

    bitsCN.com MySql如何插入和查询二进制数据 mysql二进制 Mysql:bit类型的查询与插入 mysql有种字段类型是bit. 1.如何插入呢? 它的插入必须采用: 可以使用b'va ...

  3. mysql二进制备份配置_mysql针对于二进制数据的备份

    由于这次项目文件存储部分数据是以二进制形式存储到mysql数据库中,这下移植开发环境的数据之前导出SQL的形式不行了,二进制的数据导出SQL没问题,但是导入就出现问题了.要是库中含有二进制数据,备份S ...

  4. mysql 图片转为二进制_php 图片转为二进制数据的方法

    在 mysql 数据库中是无法直接存放图片文件的,但如果将图片通过 php 程序转换成二进制数据就可以很轻松的存放到数据库中了.那么这篇文章就说一下,利用 php 将图片文件转换二进制数据的方法. p ...

  5. mysql 二进制 查询_MySql如何插入和查询二进制数据_MySQL

    bitsCN.com MySql如何插入和查询二进制数据 mysql二进制 Mysql:bit类型的查询与插入 mysql有种字段类型是bit. 1.如何插入呢? 它的插入必须采用: 可以使用b'va ...

  6. C++ MySQL存储二进制数据、存储照片

    版权声明:本文为CSDN博主「intfre」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/nibiru_ho ...

  7. MySQL二进制binlog日志说明以及利用binlog日志恢复数据

    MySQL的binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全量备份+binlog日志恢复增量数据部分). 一.关于 ...

  8. c mysql 二进制图片,想把二进制数据插入到MYSQL库里,字段为MediumBLOB类型.(存的图片)解决思路...

    当前位置:我的异常网» VB » 想把二进制数据插入到MYSQL库里,字段为MediumBLOB类 想把二进制数据插入到MYSQL库里,字段为MediumBLOB类型.(存的图片)解决思路 www.m ...

  9. mysql blob longblob_MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)

    <MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)>要点: 本文介绍了MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理 ...

  10. mysql 二进制 nodejs_nodejs怎么存取2进制数据到数据库?

    nodejs可以通过nodejs-redis模块来操作redis数据库,使用redis.createClient()连接redis数据库,可以直接将二进制数据存入数据库.通过redis-cli读取. ...

最新文章

  1. 6.2 sql安全性
  2. vscode出现磁盘路径大小写问题_vscode下python使用相对路径失败问题
  3. android-support-v4.jar 免积分下载
  4. linux命令ssh
  5. Spark详解(十三):Spark Streaming 运行架构分析
  6. 反射创建对象_如何应用Java反射技术灵活地创建程序类的对象实例
  7. 微信小程序获取unionid为空
  8. 反序列化 php R类型,pikachu-PHP反序列化、XXE、SSFR
  9. win7移动设备管理器_win7系统usb设备识别不了的解决方案
  10. WPF版的权限管理系统
  11. 2018-2019-1 20189204《Linux内核原理与分析》第二周作业
  12. 如何用AD打开PADS的PCB文件?
  13. 梅特勒托利多xk3124电子秤说明书_梅特勒托利多电子秤校正标定方法
  14. 复旦-华盛顿大学EMBA科创的奥E丨《神奇的材料》与被塑造的我们
  15. cad审图软件lisp_CAD审图软件下载_小智审图(建筑行业智能助手) 3.3.1 个人版_极速下载站_软件下载...
  16. POJ-1436___Horizontally Visible Segments —— 线段树
  17. xargs -i参数详解
  18. 支付宝小程序模板行业合集,支付宝小程序制作平台分享
  19. 国产 Linux 操作系统面临的困境
  20. word中如何设置默认英文字体和中文字体

热门文章

  1. 实时监控Cat之旅~配置Cat集群需要注意的问题
  2. cogs 539. 牛棚的灯
  3. Ajax传Form表单,包括上传文件
  4. css学习入门篇(1)
  5. IIS7、IIS8添加net.tcp协议报错 未将对象引用设置到对象的实例。
  6. iPhone开源项目汇总(更新版)
  7. HP NIC Teaming技术探讨
  8. MongoRepository
  9. QOS仍然很有价值-Vecloud
  10. 云给数据中心带来了什么特性?