注意:其中的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);
}
}
}

JDBC中级篇(MYSQL)——处理文件(BLOB)的更多相关文章

  1. JDBC中级篇(MYSQL)——处理大文本(CLOB)

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package b_blob_clob; import java.io.FileNotFoundException; import ...

  2. JDBC中级篇(MYSQL)——在JDBC中如何获得表中的,自增长的字段值

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package c_increment; import java.sql.Connection; import java.sql.P ...

  3. JDBC中级篇(MYSQL)——模拟从数据库中上传下载附件

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package b_blob_clob; import java.io.BufferedOutputStream; import j ...

  4. JDBC中级篇——批处理和PreparedStatement对有sql缓冲区的数据库的友好,测试

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package a_batch; import util.JdbcUtil; import java.sql.Connection; ...

  5. .NET Core C# 中级篇2-7 文件操作

    .NET Core CSharp 中级篇2-7 本节内容为文件操作 简介 文件操作在我们C#里还是比较常见的,例如我们读取Excel.Txt文件的内容,在程序中,这些文件都是以流的方式读取进入我们内存 ...

  6. JDBC基础篇(MYSQL)——自定义JDBCUtil工具类

    package util; import java.io.File; import java.io.InputStream; import java.sql.Connection; import ja ...

  7. mysql第五篇 : MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁

    第五篇 : MySQL 之 视图.触发器.存储过程.函数.事物与数据库锁 一.视图 视图是一个虚拟表(非真实存在的),其本质是‘根据SQL语句获取动态的数据集,并为其命名‘ ,用户使用时只需使用“名称 ...

  8. Ubuntu jsp平台使用JDBC来连接MySQL数据库

    Ubuntu 7.04 搭建Ubuntu jsp平台开发环境MySQL+tomcat+apache+j2sdk1.6在所有安装开始前先在Terminal中输入 rpm -q -a查看是否安装过rpm ...

  9. 25个增强iOS应用程序性能的提示和技巧(中级篇)(3)

    25个增强iOS应用程序性能的提示和技巧(中级篇)(3) 2013-04-16 14:42 破船之家 beyondvincent 字号:T | T 本文收集了25个关于可以提升程序性能的提示和技巧,分 ...

随机推荐

  1. ArrayList 深入浅出

    ArrayList 特点:按添加顺序排列.可重复.非线程安全: 底层实现:数组 扩容原理:初始化集合时,默认容量为 0,第一次添加元素时扩容为 10,容量不够时扩容为原来容量的 1.5 倍. 这里扩容 ...

  2. MapReduce学习总结之简介

    执行步骤:1)准备Map处理的输入数据 2)Mapper处理 3)Shuffle 4)Reduce处理 5)结果输出 三.mapreduce核心概念: 1)split:交由MapReduce作业来处理 ...

  3. elasticsearch常见错误及解决方案

    1.OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, th ...

  4. airodump-ng的使用及显示

    PWR   表示所接收的信号的强度.表示为负数,数值赿大表示信号赿强.(绝对值赿大,数据赿值小) beacons  表示网卡接收到的AP发出的信号个数

  5. PAT乙级:1076 Wifi密码 (15分)

    PAT乙级:1076 Wifi密码 (15分) 题干 下面是微博上流传的一张照片:"各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题 ...

  6. 为什么要配置java环境变量

    Java环境变量,真的还有必要配吗? 作为年龄上堪称老鸟而技术上却是菜鸟的老菜鸟,为了祖国的编程事业,不惜拿出一个月工资,淘了一台配置稍高的二手笔记本,打算与老笔记本中的撸啊撸片彻底说再见,誓要在新机 ...

  7. python里面的多进程实例

    python执行多任务方式:python语言中实现多任务的方式有三种:线程,进程和协程 一.python多进程: multiprocessing         概念:Python提供了非常好用的多进 ...

  8. 获取不到自定义的request的header属性

    java获取headers的代码如下: // 获取http-header里面对应的签名信息 Enumeration<?> headerNames = request.getHeaderNa ...

  9. Hadoop 3.1.1 - Yarn 服务 - 总览

    YARN 服务 总览 Yarn 服务框架为在 Yarn 原生环境里长时间运行的服务,提供了一流的支持和接口.简言之,它扮演了容器编排系统的角色,统一管理 Yarn 上运行的容器化服务.它同时支持 Do ...

  10. centos安装ansible

    此次测试总共有三台机,分别如下: ansible服务器:10.0.0.20 client01:10.0.0.21 client02:10.0.0.22 一.安装ansible 方法一. yum ins ...