029_jdbc-mysql二进制数据
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二进制数据相关推荐
- mysql二进制日志文件差不多_mysql数据同步-基于二进制日志文件和position复制点的方式...
mysql的binlog日志有三种格式,分别为statement,mixed,以及row. 1.Statement:每一条会修改数据的sql都会记录在binlog中 优缺点:1)不用记录每一行的变化, ...
- mysql 二进制查询_MySql如何插入和查询二进制数据_MySQL
bitsCN.com MySql如何插入和查询二进制数据 mysql二进制 Mysql:bit类型的查询与插入 mysql有种字段类型是bit. 1.如何插入呢? 它的插入必须采用: 可以使用b'va ...
- mysql二进制备份配置_mysql针对于二进制数据的备份
由于这次项目文件存储部分数据是以二进制形式存储到mysql数据库中,这下移植开发环境的数据之前导出SQL的形式不行了,二进制的数据导出SQL没问题,但是导入就出现问题了.要是库中含有二进制数据,备份S ...
- mysql 图片转为二进制_php 图片转为二进制数据的方法
在 mysql 数据库中是无法直接存放图片文件的,但如果将图片通过 php 程序转换成二进制数据就可以很轻松的存放到数据库中了.那么这篇文章就说一下,利用 php 将图片文件转换二进制数据的方法. p ...
- mysql 二进制 查询_MySql如何插入和查询二进制数据_MySQL
bitsCN.com MySql如何插入和查询二进制数据 mysql二进制 Mysql:bit类型的查询与插入 mysql有种字段类型是bit. 1.如何插入呢? 它的插入必须采用: 可以使用b'va ...
- C++ MySQL存储二进制数据、存储照片
版权声明:本文为CSDN博主「intfre」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/nibiru_ho ...
- MySQL二进制binlog日志说明以及利用binlog日志恢复数据
MySQL的binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全量备份+binlog日志恢复增量数据部分). 一.关于 ...
- c mysql 二进制图片,想把二进制数据插入到MYSQL库里,字段为MediumBLOB类型.(存的图片)解决思路...
当前位置:我的异常网» VB » 想把二进制数据插入到MYSQL库里,字段为MediumBLOB类 想把二进制数据插入到MYSQL库里,字段为MediumBLOB类型.(存的图片)解决思路 www.m ...
- mysql blob longblob_MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
<MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)>要点: 本文介绍了MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理 ...
- mysql 二进制 nodejs_nodejs怎么存取2进制数据到数据库?
nodejs可以通过nodejs-redis模块来操作redis数据库,使用redis.createClient()连接redis数据库,可以直接将二进制数据存入数据库.通过redis-cli读取. ...
最新文章
- 6.2 sql安全性
- vscode出现磁盘路径大小写问题_vscode下python使用相对路径失败问题
- android-support-v4.jar 免积分下载
- linux命令ssh
- Spark详解(十三):Spark Streaming 运行架构分析
- 反射创建对象_如何应用Java反射技术灵活地创建程序类的对象实例
- 微信小程序获取unionid为空
- 反序列化 php R类型,pikachu-PHP反序列化、XXE、SSFR
- win7移动设备管理器_win7系统usb设备识别不了的解决方案
- WPF版的权限管理系统
- 2018-2019-1 20189204《Linux内核原理与分析》第二周作业
- 如何用AD打开PADS的PCB文件?
- 梅特勒托利多xk3124电子秤说明书_梅特勒托利多电子秤校正标定方法
- 复旦-华盛顿大学EMBA科创的奥E丨《神奇的材料》与被塑造的我们
- cad审图软件lisp_CAD审图软件下载_小智审图(建筑行业智能助手) 3.3.1 个人版_极速下载站_软件下载...
- POJ-1436___Horizontally Visible Segments —— 线段树
- xargs -i参数详解
- 支付宝小程序模板行业合集,支付宝小程序制作平台分享
- 国产 Linux 操作系统面临的困境
- word中如何设置默认英文字体和中文字体