`
robinsoncrusoe
  • 浏览: 748879 次
  • 性别: 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进行图片的存取操作。 首先,让我们了解MySQL中的BLOB类型。BLOB是一个用来存储大量二进制数据的字段类型,它不受字符集的限制,适合存储图像、音频或视频文件等。MySQL提供了...

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

    Mysql 数据库中存取图片的 Java 实现 MySQL 数据库中存取图片的 Java 实现可以通过两种方式实现:一种是将图片单独存放在固定文件夹里,数据库表中对应的字段仅保存该图片的路径和名字 ;另一种是先对图片进行编码...

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

    "基于Java向MySQL数据库中存取图片" 在本文中,我们将介绍如何使用Java语言向MySQL数据库中存取图片。首先,我们需要了解MySQL数据库中的Blob类型,它是一个二进制类型,通常我们会将图片或音像文件转成二进制再...

    java实现本地读取图片存储到数据库中并在html网页显示

    这个过程涉及到的主要技术包括Java编程、数据库操作(特别是MySQL)以及前后端交互。 首先,我们需要理解的是,将图片存储到数据库中通常采用的方法是将图片转换为二进制数据流。这是因为数据库系统更善于处理结构...

    bbs项目源码(java+mysql)

    学习和研究这个项目,不仅可以深入理解Java Web开发,还可以熟悉MySQL数据库的使用,包括CRUD操作、事务处理、索引优化等。同时,通过阅读源码,可以学习到如何设计和实现论坛的用户认证、权限控制、分页显示、搜索...

    java+mysql系统

    【Java + MySQL 系统详解】 Java 和 MySQL 的结合是构建高效、稳定的企业级Web应用程序的常见选择。这个“java+mysql系统”是一套基于Java技术栈和MySQL数据库的管理系统,设计用于部署在Tomcat应用服务器上。让...

    java+mysql的窗体化图书管理系统

    在系统中,开发者通过JDBC驱动程序与MySQL建立连接,执行SQL语句,实现数据的存取。这涉及到加载驱动、创建连接、准备与执行SQL语句、处理结果集以及关闭连接等一系列步骤。 **4. MVC设计模式** Model-View-...

    java+mysql超市管理系统

    - **JDBC连接数据库**:使用Java的JDBC API进行数据库操作,实现对MySQL的数据存取。 - **Spring框架**:Spring提供了依赖注入和AOP(面向切面编程)等功能,简化了系统开发。 - **Hibernate ORM**:可选地,系统...

    java+mysql开发的单词簿源码.zip

    在单词簿应用中,JDBC接口用于建立Java程序与MySQL数据库之间的桥梁,实现数据的存取。 5. **数据库设计**: 项目的数据库可能包含至少两个表:一个是用户表,用于存储用户名、密码等用户信息;另一个是单词表,...

    mysql+Java实现的学生宿舍信息管理系统.rar

    Java通过JDBC(Java Database Connectivity)接口连接到MySQL数据库,进行数据的存取操作。开发者可能使用了Servlet和JSP技术来构建Web应用,Servlet负责接收和响应HTTP请求,JSP则用于动态生成HTML页面,展示数据和...

    mysql java最新驱动包 mysql-connector-java-8.0.16.rar

    总的来说,"mysql-connector-java-8.0.16.rar" 是Java开发者与MySQL数据库交互的重要工具,通过它可以轻松地在Java应用程序中实现数据的存取和管理。正确地集成和使用这个驱动包,可以极大地提升开发效率,并确保...

    mysql-connector-java-5.1.40.zip和mysql-connector-java-5.1.10.jar

    总结,`mysql-connector-java-5.1.40.zip`和`mysql-connector-java-5.1.10.jar`是MySQL与Java应用交互的关键组件,它们通过JDBC实现了数据存取功能。了解和正确使用这些文件,可以帮助Java开发者更高效地与MySQL...

    mysql5.x最新版本驱动 mysql-connector-java-5.1.47.rar

    MySQL是世界上最受欢迎的关系型数据库...总之,`mysql-connector-java-5.1.47`是连接Java应用程序和MySQL 5.x数据库的关键组件,它的使用极大地简化了Java开发中的数据库操作,使得数据存取和管理变得更为高效和便捷。

    JAVA+MYSQL 图书管理系统

    此外,还需使用JAVA的JDBC(Java Database Connectivity) API来连接和操作数据库,实现数据的存取。 系统的核心功能包括: 1. 用户管理:注册、登录和权限控制。用户可以创建账户,登录系统进行图书查询、借阅等...

    Java+Swing+Mysql实现通讯录管理系统

    开发者可能使用了JDBC(Java Database Connectivity)API来连接Java程序与MySQL数据库,实现了数据的增删改查操作。 系统可能包含以下几个主要模块: 1. **用户界面**:Swing组件构成的主界面,可能包括菜单栏、...

    mysql-connector-java-8.0.28 jar包

    因此,MySQL Connector/J扮演着连接这两者的角色,使得Java开发者能够方便地进行数据存取、查询、更新和删除等操作。 MySQL Connector/J 8.0.28 版本的发布,主要关注于增强性能、稳定性和安全性。在这一版本中,...

    用java写的电子词典程序(JAVA+MySQL)

    在本项目中,Java通过JDBC(Java Database Connectivity)接口连接到MySQL数据库,进行数据的存取操作。JDBC是Java标准的一部分,它提供了一系列的API,使得Java程序可以与各种数据库系统进行通信。开发者需要编写...

    java存取图片到数据库

    这里我们将详细探讨如何实现这一功能,主要围绕Java与关系型数据库(如MySQL)的交互。 1. 图片编码: 在将图片存入数据库之前,需要将图片文件转换成可存储的数据格式。常用的方法是将图片文件转换为二进制流或...

    mysql-connector-java-8.0.21.zip

    MySQL是世界上最受欢迎的开源数据库系统之一,而...通过这个压缩文件,Java开发者能够在Mac OS上无缝地与MySQL 8.0.21数据库进行通信,实现数据的存取、管理和分析,为开发高效、稳定的数据库应用提供了坚实的基础。

    java对blob的存取.pdf

    Java 对 Blob 的存取 在 Java 中对 Blob(Binary Large OBject)的存取是非常重要的,Blob 是一种二进制大对象,它...Java 对 Blob 的存取是非常重要的,它可以帮助我们实现图片、音频、视频等大型文件的存储和读取。

Global site tag (gtag.js) - Google Analytics