一:建表

二:获取数据库连接

1:导入mysql的驱动jar包,mysql-connector-java-5.1.8-bin.jar

2:写代码连接数据库,如下:

 1 /**
 2  *
 3 */  4 package com.hlcui.file;  5  6 import java.sql.Connection;  7 import java.sql.DriverManager;  8 import java.sql.SQLException;  9 10 /** 11  * @author Administrator 12  * 13 */ 14 public class DBUtil { 15 // 定义数据库连接参数 16 public static final String DRIVER_CLASS_NAME = "com.mysql.jdbc.Driver"; 17 public static final String URL = "jdbc:mysql://localhost:3306/test"; 18 public static final String USERNAME = "root"; 19 public static final String PASSWORD = "root"; 20 21 // 注册数据库驱动 22 static { 23 try { 24  Class.forName(DRIVER_CLASS_NAME); 25 } catch (ClassNotFoundException e) { 26 System.out.println("注册失败!"); 27  e.printStackTrace(); 28  } 29  } 30 31 // 获取连接 32 public static Connection getConn() throws SQLException { 33 return DriverManager.getConnection(URL, USERNAME, PASSWORD); 34  } 35 36 // 关闭连接 37 public static void closeConn(Connection conn) { 38 if (null != conn) { 39 try { 40  conn.close(); 41 } catch (SQLException e) { 42 System.out.println("关闭连接失败!"); 43  e.printStackTrace(); 44  } 45  } 46  } 47 //测试 48 public static void main(String[] args) throws SQLException { 49 System.out.println(DBUtil.getConn()); 50  } 51 52 }

三:封装读取图片的流

 1 /**
 2  *
 3  */  4 package com.hlcui.file;  5  6 import java.io.File;  7 import java.io.FileInputStream;  8 import java.io.FileOutputStream;  9 import java.io.IOException; 10 import java.io.InputStream; 11 12 /** 13  * @author Administrator 14  * 15 */ 16 public class ImageUtil { 17 18 // 读取本地图片获取输入流 19 public static FileInputStream readImage(String path) throws IOException { 20 return new FileInputStream(new File(path)); 21  } 22 23 // 读取表中图片获取输出流 24 public static void readBin2Image(InputStream in, String targetPath) { 25 File file = new File(targetPath); 26 String path = targetPath.substring(0, targetPath.lastIndexOf("/")); 27 if (!file.exists()) { 28 new File(path).mkdir(); 29  } 30 FileOutputStream fos = null; 31 try { 32 fos = new FileOutputStream(file); 33 int len = 0; 34 byte[] buf = new byte[1024]; 35 while ((len = in.read(buf)) != -1) { 36 fos.write(buf, 0, len); 37  } 38  fos.flush(); 39 } catch (Exception e) { 40  e.printStackTrace(); 41 } finally { 42 if (null != fos) { 43 try { 44  fos.close(); 45 } catch (IOException e) { 46  e.printStackTrace(); 47  } 48  } 49  } 50  } 51 }

四:实现图片(本地、数据库互相传输)

 1 /**
 2  *
 3  */  4 package com.hlcui.file;  5  6 import java.io.FileInputStream;  7 import java.io.InputStream;  8 import java.sql.Connection;  9 import java.sql.PreparedStatement; 10 import java.sql.ResultSet; 11 import java.sql.SQLException; 12 13 /** 14  * @author Administrator 测试写入数据库以及从数据库中读取 15 */ 16 public class ImageDemo { 17 18 // 将图片插入数据库 19 public static void readImage2DB() { 20 String path = "D:/1.png"; 21 Connection conn = null; 22 PreparedStatement ps = null; 23 FileInputStream in = null; 24 try { 25 in = ImageUtil.readImage(path); 26 conn = DBUtil.getConn(); 27 String sql = "insert into photo (id,name,photo)values(?,?,?)"; 28 ps = conn.prepareStatement(sql); 29 ps.setInt(1, 1); 30 ps.setString(2, "Tom"); 31 ps.setBinaryStream(3, in, in.available()); 32 int count = ps.executeUpdate(); 33 if (count > 0) { 34 System.out.println("插入成功!"); 35 } else { 36 System.out.println("插入失败!"); 37  } 38 } catch (Exception e) { 39  e.printStackTrace(); 40 } finally { 41  DBUtil.closeConn(conn); 42 if (null != ps) { 43 try { 44  ps.close(); 45 } catch (SQLException e) { 46  e.printStackTrace(); 47  } 48  } 49  } 50 51  } 52 53 // 读取数据库中图片 54 public static void readDB2Image() { 55 String targetPath = "D:/image/1.png"; 56 Connection conn = null; 57 PreparedStatement ps = null; 58 ResultSet rs = null; 59 try { 60 conn = DBUtil.getConn(); 61 String sql = "select * from photo where id =?"; 62 ps = conn.prepareStatement(sql); 63 ps.setInt(1, 1); 64 rs = ps.executeQuery(); 65 while (rs.next()) { 66 InputStream in = rs.getBinaryStream("photo"); 67  ImageUtil.readBin2Image(in, targetPath); 68  } 69 } catch (Exception e) { 70  e.printStackTrace(); 71 } finally { 72  DBUtil.closeConn(conn); 73 if (rs != null) { 74 try { 75  rs.close(); 76 } catch (SQLException e) { 77  e.printStackTrace(); 78  } 79  } 80 if (ps != null) { 81 try { 82 ps.close(); 83 } catch (SQLException e) { 84 e.printStackTrace(); 85 } 86 } 87 88 } 89 } 90 //测试 91 public static void main(String[] args) { 92 //readImage2DB(); 93 readDB2Image(); 94 } 95 }

转载于:https://www.cnblogs.com/ayuwang/p/6295502.html

java io之图片存取相关推荐

  1. java解析webp格式图片宽高;java解析webp图片转png格式

    java解析webp格式图片宽高:java解析webp图片转png格式 package 你的包名:***.***.***.***;import java.io.FileInputStream; imp ...

  2. java dpi_用java imageio调整图片DPI,例如从96调整为300

    因项目需求把图片的DPI值提升到300,否则OCR识别产生错乱:直接上源码: 1.图片处理接口: package util.image.dpi; import java.awt.image.Buffe ...

  3. java Io流实现图片复制

    1.java.io中提供了很多流类,在这里我们要用的是FileInputStream/FileOutputStream----用于读取原始字节 2.首先我们把一张图片拷贝放到当前目录下例如:" ...

  4. java使用工具类生成验证码图片时,出现Exception in thread “main“ java.io.FileNotFoundException: C:\a.jpg (拒绝访问。)

    使用这段代码来测试生成验证码图片时 public static void main(String[] args) throws IOException {//生成验证码的图片位置OutputStrea ...

  5. java mysql blob 存储图片,Java实现用Mysql存取图片操作实例

    1.MySQL中的BLOB类型 Mysql中可以存储大文件数据,一般使用的BLOB对象.如图片,视频等等. BLOB是一个二进制大对象,可以容纳可变数量的数据.因为是二进制对象,所以与编码方式无关.有 ...

  6. 文件之间的拷贝(拷贝图片实例)java.io.FileNotFoundException: G:\dad (拒绝访问。)通过绝对路径获取各种文件名

    1.报错解决 :java.io.FileNotFoundException: G:\dad (拒绝访问.) 参考文献:(364条消息) java.io.FileNotFoundException:(拒 ...

  7. 初识 JAVA IO

    2019独角兽企业重金招聘Python工程师标准>>> 由于本人画图太渣,本文图片均copy自互联网 什么是I/O 通常定义: I/O输入/输出(Input/Output),分为IO ...

  8. java导入带图片的excel表格(工具HSSFWorkbook-HSSFSheet)(支持一条数据(单元格)可以导入多个图片,)

    一个表格框可以添加多个图片 Excel表格导入数据的同时导入图片 @Transactional(rollbackFor = Exception.class)public String selectEx ...

  9. java IO流(复习,上课笔记)

    IO流 流 流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象 流的本质:数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作 凡是与Java外部进行交互的,都叫做 ...

最新文章

  1. 快速排序 c++_算法浅谈——分治算法与归并、快速排序(附代码和动图演示)
  2. 虚拟交换机软件_H3C交换机IRF配置介绍
  3. Tomcat【环境搭建 02】Web端403 Access Denied You are not authorized to view this page解决方法(Tomcat 10.2.12 版本)
  4. python 多数据输出到txt_python-BeautifulSoup输出到.txt文件
  5. 【Effective Java】6、使用复合优先于使用继承
  6. 【bzoj1263】[SCOI2006]整数划分 高精度
  7. TensorFlow是什么?怎么用?终于有人讲明白了
  8. 安装rocketmq-console插件
  9. matlab软件及基础实验第8单元,知到高等数学与MATLAB启蒙第八单元章节测试答案...
  10. reg 正则表达式^
  11. #洛谷oj:P2024 [NOI2001] 食物链
  12. 将UCF101数据集的视频提取为帧(多线程实现)
  13. osl倒数第三层_原子最外层、次外层及倒数第三层最多容纳电子数的解释
  14. python另存为excel_python 将数据保存为excel的xls格式(实例讲解)
  15. HDU6070(线段树)
  16. 假关机or真休眠? Win 8开关机刨根问底
  17. 2012服务器更改temp位置,如何更改windows的temp目录位置
  18. element ui 中 el-checkbox-group 点击一个全部选中的问题
  19. 安装程序向硬盘复制文件是遇到错误:[Errno 5] Input/out error ;U盘安装Ubuntu18.04.1遇到错误
  20. jmeter压力测试并发

热门文章

  1. 让linux的SSH客户端也能记住服务器的密码
  2. PyRun_SimpleString的无穷怨念
  3. React开发(164):React中this.props.children续集
  4. Leetcode刷题(3)整数反转
  5. 前端学习(3044):vue+element今日头条管理-组件目录和组件名
  6. 前端学习(2966):上午回顾
  7. [html] webSocket怎么做兼容处理?
  8. [css] 说说你对相对定位、绝对定位、固定定位的理解
  9. [css] 当拿到一个新的项目,让你对这个项目的css做下架构设计,你该如何下手?
  10. 工作213:不能改变父组件值