`
robinsoncrusoe
  • 浏览: 736048 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

Java实现MySQL图片存取操作

    博客分类:
  • JAVA
阅读更多
文章出处:http://blog.csdn.net/thc1987/archive/2009/03/10/3972201.aspx

存入操作
/*
---------------表结构------------
表名:student2

+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int(4)      | NO   | PRI | NULL    |       |
| name   | varchar(20) | YES  |     | NULL    |       |
| stupic | blob        | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+

*/
package com.ibm.jdbc;

import java.io.*;
import java.sql.*;
public class StoreBLOB {
	public static void main(String[] args) {
		//连接MySQl数据库
		Connection con=DBManager.getConnection();
		PreparedStatement ps=null;
		InputStream in=null; 
		try {
			//从本地硬盘读取一张读片
			in=new FileInputStream("d:/111.jpg");
			ps=con.prepareStatement("insert into student2 values(?,?,?)");
			ps.setInt(1,2);
			ps.setString(2, "Tom");
			ps.setBinaryStream(3, in, in.available());
			ps.executeUpdate();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		finally
		{
			try {
				//关闭流
				if(in!=null) in.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//关闭相关连接
			DBManager.close(ps, con);
			
		}
		
	}
}



取出操作

package com.ibm.jdbc;

import java.sql.*;
import java.io.*;
public class GetBLOB {
	public static void main(String[] args) {
		Connection con=DBManager.getConnection();
		Statement st=null;
		ResultSet rs=null;
		InputStream in=null;
		OutputStream out=null;

		try {
			st=con.createStatement();
			rs=st.executeQuery("select stupic from student2 where id=2");
			rs.next();	//将光标指向第一行
			//从rs中读取stupic放进InputStream对象中
			in=rs.getBinaryStream("stupic");
			//申明byte数组,用来存放图片流
			byte[] b=new byte[40000];
			in.read(b);	//从InputStream对象中读取数据放进byte数组中
			//实例化OutputStream对象,在D盘创建一个图片文件
			out=new FileOutputStream("d:/222.jpg");
			//将文件输出,内容则为byte数组里面的数据
			out.write(b);
			out.flush();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally
		{
			try {
				if(in!=null)
					in.close();
				if(out!=null)
					out.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			DBManager.close(rs, st, con);//关闭相关连接
		}
	}
}


需要说明的是,上面是原稿,下面我进行一下修改改为Java+mysql版本的:
首先来创建数据库:(在Mysql中创建)

mysql>  create database test;
mysql>  use test;
mysql>  create table student2  (
mysql>  id int(4) primary key not  null,
mysql>  name varchar(20),  
mysql>  stupic blob
mysql>  );



至此,mysql数据库,建立完毕。把mysql的驱动加上去。下面是java代码的实现:我在原来的代码基础上,稍作修改,就实现了。这里还得在D盘放一张111.jpg的图片,然后运行StoreBLOB.java,再运行GetBLOB.java,最后再查看D盘,多了一张222.jpg.
我自己改的,
存入操作:
package com.ibm.jdbc;
 import java.io.*;  
import java.sql.*;  
public class StoreBLOB {
	public static void main(String[] args) {
		//连接MySQl数据库
		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
		} catch (InstantiationException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (IllegalAccessException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (ClassNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		String user="root";
		String password="root";
		String url="jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true"; 
		Connection con = null;
		try {
			con = DriverManager.getConnection(url);
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		PreparedStatement ps=null;
		InputStream in=null; 
		try {
			//从本地硬盘读取一张读片
			in=new FileInputStream("d:/111.jpg");
			ps=con.prepareStatement("insert into student2 values(?,?,?)");
			ps.setInt(1,2);
			ps.setString(2, "Tom");
			ps.setBinaryStream(3, in, in.available());
			ps.executeUpdate();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		finally
		{
			try {
				//关闭流
				if(in!=null) in.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				ps.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			try {
				con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
			//关闭相关连接
			//DriverManager.close(ps, con);
			
		}
		
	}

}


取出操作
package com.ibm.jdbc;
import java.sql.*;
import java.io.*;

public class GetBLOB {
	public static void main(String[] args) {
		try {
			Class.forName("com.mysql.jdbc.Driver").newInstance();
		} catch (InstantiationException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		} catch (IllegalAccessException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		} catch (ClassNotFoundException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		String user="root";
		String password="root";
		String url="jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true"; 
		Connection con = null;
		try {
			con = DriverManager.getConnection(url);
		} catch (SQLException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
		Statement st=null;
		ResultSet rs=null;
		InputStream in=null;
		OutputStream out=null;

		try {
			st=con.createStatement();
			rs=st.executeQuery("select stupic from student2 where id=2");
			rs.next();	//将光标指向第一行
			//从rs中读取stupic放进InputStream对象中
			in=rs.getBinaryStream("stupic");
			//申明byte数组,用来存放图片流
			byte[] b=new byte[40000];
			in.read(b);	//从InputStream对象中读取数据放进byte数组中
			//实例化OutputStream对象,在D盘创建一个图片文件
			out=new FileOutputStream("d:/222.jpg");
			//将文件输出,内容则为byte数组里面的数据
			out.write(b);
			out.flush();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally
		{
			try {
				if(in!=null)
					in.close();
				if(out!=null)
					out.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				rs.close();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			try {
				st.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
			//DriverManager.close(rs, st, con);//关闭相关连接
		}
	}

}

分享到:
评论

相关推荐

    Java实现用Mysql存取图片操作实例

    主要介绍了Java实现用Mysql存取图片操作实例,本文讲解了使用BLOB类型保存和读取图片的代码实例,需要的朋友可以参考下

    Mysql数据库中存取图片的Java实现.pdf

    Mysql数据库中存取图片的Java实现.pdf

    如何基于java向mysql数据库中存取图片

    主要介绍了如何基于java向mysql数据库中存取图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Java+MySql数据库 模拟ATM自助存取款bankproject

    一个模拟ATM自动取款机的Java小程序,连接MySql数据库,借鉴MVC的方式组织文件实现数据的存取以及修改功能!

    一种基于Java和MySQL的物流服务协同平台

    并以MySQL数据库实现数据存取,采用JavaWEB技术完成了系统前台开发,为平台用户提供了友好的操作界面,有效地协调了一个完整的物流业务中各个角色之间的沟通和配合,实现了信息化的物流运输基本过程。

    基于JAVA论坛管理系统设计的毕业设计,该系统采用三层架构,分别是展现层、业务逻辑层和数据存取层 MySQL+JSP

    数据存取层使用JDBC技术实现,主要负责与MySQL数据库的连接、查询和更新操作。设计了UserDao、PostDao、ReplyDao等多个Dao组件来实现数据的CRUD操作。 整体架构采用MVC模式,Servlet组件充当控制器,JSP页面充当视图,...

    JAVA連接MYSQL DATABASE

    可以簡易的連接MYSQL DATABASE存取 刪除 尋找等

    MYSQL

    3.6.3 登录支持 3.6.4 扩展的登录支持 4 安装 MySQL 4.1 怎样获得MySQL 4.2 MySQL支持的操作系统 4.3 使用MySQL哪个版本 4.4 怎样和何时发布更新版本 4.5 安装布局 4.6 安装...

    Java swing+mysql 简易的图书管理系统

    4、 掌握java.sql包中提供各种类,编写程序实现数据库信息的存取和查询。 5、 培养独立查找资料,并解决问题的能力。 二、实验任务 1、建立一个数据库Library,其中含有如下表格(字段): Books(ISBN(书号),...

    Java银行管理系统+MySQL.rar

    "【实例简介】JAVA+Mysql编写的银行管理系统 包括开户、存取、转账、改密、销户、 通过数据库进行增删改查、Java学习实战项目,本资源仅供参考学习、版权所有、严禁侵权! 开发环境:myeclipse10+mysql+tomcat 开发...

    JAVA毕业设计之springboot053宠物咖啡馆平台的设计与实现(springboot+mysql)完整源码.zip

    前端界面层负责展示用户界面和接收用户操作,后端业务逻辑层负责处理业务逻辑和数据验证,数据访问层负责与数据库进行交互和数据存取。此外,为了保证系统的安全性,我们还进行了用户权限控制和数据加密的处理。用户...

    Java银行管理系统+MySQL

    JAVA+Mysql编写的银行管理系统 包括开户、存取、转账、改密、销户、 通过数据库进行增删改查、本资源仅供参考学习、版权所有、严禁侵权!

    MySQL中文参考手册.chm

    3.6.3 登录支持 3.6.4 扩展的登录支持 4 安装 MySQL 4.1 怎样获得MySQL 4.2 MySQL支持的操作系统 4.3 使用MySQL哪个版本 4.4 怎样和何时发布更新版本 4.5 安装布局 ...

    javaGui实现银行管理系统源码+数据库(高分大作业).zip

    javaGui实现银行管理系统源码+数据库(高分大作业).zip功能 首先从登陆页面登陆或者注册登陆,就可以看到银行职员管理,可以实现添加修改删除, 客户账户管理也是可以实现添加修改删除, 存取贷业务管理是可以在...

    mysql5.5.28.zip

    当然,由于MySQL的知名度日益增加,许多第三方软件公司推出了MySQL在Windows环境中的具有图形界面的支持软件,如EMS公司的EMS MYSQL MANAGER就提供了Windows形式的MySQL数据库操作功能。 转帖于 Xue163.com_MySQL

    java-Teradata-MySQL.rar_JAVA连接teradata_teradata_teradata java_te

    Java连接Teradata数据库和MySQL数据库,并从中进行数据的存取,包含重要代码的注释,已测试运行,将个人信息填入conf文件夹文件中即可使用。

    2023最新MySQL100道面试题-附答案解析

    1. 为什么要使用数据库 数据保存在内存 优点:存取速度快 缺点:数据不能永久保存 数据保存在文件 优点:数据永久保存 缺点:1)速度比内存...在Java企业级开发中非常常用,因为 MySQL 是开源免费的,并且方便扩展。

    毕业设计,基于SpringBoot+Vue+MySql开发的行者外卖管理系统网站,内含Java完整源代码,数据库脚本

    毕业设计,基于SpringBoot+Vue+MySql开发的行者外卖管理系统网站,内含Java完整源代码,数据库脚本 行者外卖管理系统网站,是一个面向外卖管理后台的平台,实现了管理员对员工信息、菜品信息、套餐信息、上传下载...

    MySQL中文参考手册

    o 4.2 MySQL支持的操作系统 o 4.3 使用MySQL哪个版本 o 4.4 怎样和何时发布更新版本 o 4.5 安装布局 o 4.6 安装MySQL二进制代码分发 + 4.6.1 Linux RPM注意事项 + 4.6.2 构造客户程序 + 4.6.3 系统特定的...

Global site tag (gtag.js) - Google Analytics