java io之图片存取

一:建表

 

二:获取数据库连接

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417374.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker mysql输入中文_Docker解决终端无法输入中文的问题

前言:某日在docker里搭建了一套MySQL服务,发现在MySQL命令行内无法输入中文 中文显示也以?代替,起初以为是MySQL字符集的问题 检查之后未解决问题,又退出到容器终端 发现同样不能输入中文,由此推断 是系统字符集出现问…

基于java的程序启动出错Could not create the Java virtual machine

1.java版本过低。 2.版本冲突:1)开始→运行,cmd进入控制台后,输入命令java -version查看jdk版本会提示版本是1.3.1,而非已安装的jdk1.6; 2)修改系统环境变量Path,将jdk1.6的路径放在其他jdk路径前面即可。

An error occurred while searching for implementations of method

1:在我安装完scala的插件后,在打开方法的实现类(open implementactions)的时候,抛出这个异常,后来发现这个异常是因为我的scala的插件跟我eclipse版本不兼容导致的。 An error occurred while searching fo…

remote: Incorrect username or password ( access token ) fatal: Authentication failed for gitee

gitee推送到远程仓库时提示错误 remote: Incorrect username or password ( access token ) fatal: Authentication failed for ‘https://gitee.com/***/***.git/’ 解决办法:清除本地的gitee用户名和密码 git config --system --unset credential.helper 再执行…

go操作mysql创建多对多_Django 数据库表多对多的创建和增删改查

前面已经学习了在Django里面如何对单表的操作,同时也学习了1对多(单个外键)的表的操作。接下来,我们看看多对多(多个外键)的关系如何创建和管理。比如说,我们有一个主机表,也有一个应用程序表,一个主机可以对应多个程序…

SQL Server 日志清理、数据文件收缩

use DBNameDUMP TRANSACTION DBName WITH NO_LOG BACKUP LOG DBName WITH NO_LOGDBCC SHRINKFILE (DBName, 1);--收缩数据库DBCC SHRINKFILE (DBName_Log, 1);--收缩日志

VMware 报错“Intel VT-x处于禁止状态”

VMware Workstation 10虚拟机安装64位windows server 2008 R2系统时报错“Intel VT-x处于禁止状态”,如下图。 工具/原料 VMware Workstation 10 32位windows server 2008 R2 64位方法/步骤 重启电脑,启动中按F1键进入BIOS。(电脑不同进入BIOS的按键不同…

IIS 指定了身份验证方案“IntegratedWindowsAuthentication, Anonymous”,但绑定仅支持一种身份验证的规范。...

IIS 指定了身份验证方案“IntegratedWindowsAuthentication, Anonymous”,但绑定仅支持一种身份验证的规范。有效的身份验证方案为摘要、协商、NTLM、基本或匿名。请更改 IIS 设置,以便仅使用单一的身份验证方案。 错误提示说得很明白:IIS要么…

java u003_我在B站学编程 DAY-003 JAVA基础概念和语法

八进制:0-7组成例子:八卦指令在机器中以机器码格式输出,机器码一次原始输出位数是八的倍数,即以字节长度为最小单位输出。十六进制:0-9,abcde...组成,0X开头十六进制可以更紧凑地表示二进制&…

win7 64安装工商网银U盾软件

采用分步安装即可: 下载安装安全控件安装证书驱动程序

[大数据可视化]-saiku的源码包Bulid常见问题和jar包

最近在做kylinmondriansaiku的二次开发的时候,Bulid saiku的源码出现了很多问题,基本上一大部分问题jar找不到问题,很多jar国内网站都找不到。这时候只有手动下载然后注册到MAVEN本地仓库中去。 我把这些包放上来希望对给需要的朋友一些帮助。…

java 计算工具类_java精确计算工具类

importjava.math.BigDecimal;importjava.math.RoundingMode;importjava.math.BigDecimal;importjava.text.DecimalFormat;importorg.springframework.stereotype.Component;/*** 工具类 - 运算*/Componentpublic classArithUtils {//默认除法运算精度private static final int …

win7 64 安装sp1补丁提示“客户端没有所需的特权”

右击以管理员身份运行,再就是在控制面板,用户账户和家庭安全,用户账户,更改用户账户控制设置,调到最低。 重新启动电脑即可运行。

C# 全角半角相互转换

/// <summary>/// 半角转全角(SBC case)/// 全角空格为12288&#xff0c;半角空格为32/// 其他字符半角(33-126)与全角(65281-65374)的对应关系是&#xff1a;均相差65248/// </summary>/// <param name"input">任意字符串</param>/// <r…

java进程和线程_Java™ 教程(进程和线程)

并发计算机用户想当然地认为他们的系统一次可以做不止一件事&#xff0c;他们设想他们可以继续在文字处理器中工作&#xff0c;而其他应用程序则下载文件、管理打印队列和流音频&#xff0c;即使是单个应用程序通常也希望一次完成多个任务。例如&#xff0c;流式音频应用程序必…