博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC中级篇(MYSQL)——处理文件(BLOB)
阅读量:4670 次
发布时间:2019-06-09

本文共 2357 字,大约阅读时间需要 7 分钟。

微笑注意:其中的JdbcUtil是我自定义的连接工具类:

package b_blob_clob;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.sql.Blob;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import util.JdbcUtil;/** * 关于BLOB:文件 *  * @author mzy * */public class Demo02 {	public static void main(String[] args) {		// write();				/**		 * 读取		 */		Connection conn = null;		PreparedStatement stmt = null;		ResultSet rs = null;		try{			conn = JdbcUtil.getConnection();			String sql = "select * from news where id=?";			stmt = conn.prepareStatement(sql);			stmt.setInt(1, 1);			rs = stmt.executeQuery();						while(rs.next()){							//读取blob字段				Blob blob = rs.getBlob("attachments");				//通过blob字段获取输入字节流				InputStream in = blob.getBinaryStream();								//把输入字节流写出文件中				FileOutputStream out = new FileOutputStream("e:/srceen.exe");				byte[] buf = new byte[1024];				int len = 0;				//边读边写				while( (len=in.read(buf))!=-1  ){					out.write(buf, 0, len);				}  				//关闭流				out.close();				in.close();			}					}catch(Exception e){			e.printStackTrace();		}finally{			JdbcUtil.close(stmt, conn);		}	}	private static void write() {		/**		 * 写入		 */		Connection conn = null;		PreparedStatement stmt = null;		try{			conn = JdbcUtil.getConnection();			String sql = "update news set attachments=? where id=?";			//预编译			stmt = conn.prepareStatement(sql);			//参数赋值			/**			 * 读取本地字节文件			 * 注意:			 * 	1)发送的数据内容超过了字段的长度限制,则抛出 Data too long...异常,这时需要修改字段的类型			 *  2)发送的数据内容超过了1MB(mysql服务器默认的接收数据包的大小),可以到mysql安装目录下的my.ini文件添加一个变量max_allowed_packet=50M即可!			 */			// InputStream in = new FileInputStream("./src/4.jpg"); // 图片大小小于65KB的时候			// Data too long for column 'attachments'			// InputStream in = new FileInputStream("./src/6.jpg"); // 图片大小大于65KB			// 修改attachments:字段的类型从BLOB到mediumBLOB:限制大小为16MB,再大就只能使用LongBLOB了 4GB			// InputStream in = new FileInputStream("./src/6.jpg"); // 成功						// 上传大小大于1MB的			InputStream in = new FileInputStream("./src/InletexEMC.exe");			// 这里直接添加成功,如果没有成功需要去mysql的my.ini中配置			// max_allowed_packet=随意大小			/**			 * 设置blob字段			 */			stmt.setBlob(1, in);			stmt.setInt(2, 1);			//执行			stmt.executeUpdate();			System.out.println("添加成功");		}catch(Exception e){			e.printStackTrace();		}finally{			JdbcUtil.close(stmt, conn);		}	}}

转载于:https://www.cnblogs.com/mzywucai/p/11053475.html

你可能感兴趣的文章
(原)ubuntu下cadvisor+influxdb+grafana+supervisord监控主机和docker的containers
查看>>
CentOS 下 Oracle 10g 安装 + 配置 全过程(图解)
查看>>
[LeetCode] 3Sum Closest
查看>>
struts2注解
查看>>
关于网络编程中MTU、TCP、UDP优化配置的一些总结
查看>>
Tp5整理
查看>>
微软开源项目站点
查看>>
C#语言规范
查看>>
gabor变换人脸识别的python实现,att_faces数据集平均识别率99%
查看>>
spring-boot-starter-parent的主要作用
查看>>
核心动画
查看>>
excel导入mysql
查看>>
学习笔记 for 《简明 Vim 练级攻略》 分类: ubuntu ...
查看>>
[测试题]等效集合
查看>>
[Luogu 1730]最小密度路径
查看>>
[HTML/HTML5]5 使用链接
查看>>
一些SQL语句统计
查看>>
自动生成工具
查看>>
《中国企业报》:SNS网站稳步发展进军海外
查看>>
老实说,WPF对自由开发者与小微型团体来说就是个毒瘤!
查看>>