`

java如何将图片类型的数据存入mysql 数据库

阅读更多
OS  WindowsXP  MyEclipse7.0  mysql5.0
在mysql 建立一张photo 的表
图片类型在mysql 中的列类型是Blob; Java中是java.sql.Blob类型
 
 create table photo( 
      id int not null auto_increment primary key ,
      pname       varchar(30) not null , 
      myphoto blob 
);


在mysql 中的jdbc

package com.lyx.util;

import java.sql.*;
import java.io.*;

public class MyBlob {
	/*
	 * create table photo( id int not null auto_increment primary key , pname
	 * varchar(30) not null , myphoto blob );
	 */
	public Connection getConn() {
		Connection conn = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection(
					"jdbc:mysql://localhost:3306/mydb", "root", "791129");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}
        //fromFileName 有保证文件存在
	public void add( String  fromFileName,  String  toFileName) {
		Connection conn = this.getConn();
		PreparedStatement ps;
		try {
			ps = conn.prepareStatement("insert into  photo( pname , myphoto)  values(?,?)");
			ps.setString(1, toFileName);
			File file = new File(fromFileName);
			InputStream in;
				in = new BufferedInputStream(new FileInputStream(file));
			ps.setBinaryStream(2, in, (int) file.length());
			int count = 0;
			count = ps.executeUpdate();
			if(count==1)
			{
				 System.out.println("插入数据成功!");
			}else
			{
				System.out.println("插入数据失败!");
			}
			in.close();
			ps.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
     public    void  getAll(){
    	 String sql = "select  *from   photo";
    	 Connection conn = this.getConn();
    	 PreparedStatement ps;
		try {
			ps = conn.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			int  j=0;
			while (rs.next()) {
				InputStream ins = null;
				OutputStream out = null;
				j++;
				System.out.println(rs.getInt(1) + "\t" + rs.getString(2));
				Blob  blob= rs.getBlob("myphoto");
				ins = blob.getBinaryStream();
				File  f = new File(rs.getString(2));
				out = new BufferedOutputStream(new FileOutputStream(f));
				byte[] buf = new byte[1024];
				int i = 0;
				while ((i = ins.read(buf)) != -1) {
					out.write(buf);
				}
				ins.close();
				out.close();
			}
			rs.close();
			ps.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
			
     }
     public  void  get(int id)
     {
    	 String sql = "select  *from   photo  where  id= ?";
    	 Connection conn = this.getConn();
    	 PreparedStatement ps;
		try {
			ps = conn.prepareStatement(sql);
			ResultSet rs = ps.executeQuery();
			File f = null;
			InputStream ins = null;
			OutputStream out = null;
			Blob blob =null;
			while (rs.next()) {
				System.out.println(rs.getInt(1) + "\t" + rs.getString(2));
			    blob= rs.getBlob("myphoto");
				ins = blob.getBinaryStream();
				f = new File(rs.getString(2));
				out = new BufferedOutputStream(new FileOutputStream(f));
				byte[] buf = new byte[1024];
				int i = 0;
				while ((i = ins.read(buf)) != -1) {
					out.write(buf);
				}
				ins.close();
				out.close();
			}
			rs.close();
			ps.close();
		    conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
     }
     public      void   update(int id  , File  newFile)
     {
    	 try {
    	 String sql = "update  photo  set  myphoto=?  where  id="+id;
    	 Connection conn = this.getConn();
    	 PreparedStatement 	ps = conn.prepareStatement(sql);
			InputStream  in = new BufferedInputStream(new FileInputStream(newFile));
			ps.setBinaryStream(1, in, (int) newFile.length());
			int   count=0;
			count=ps.executeUpdate();
			System.out.println(count);
			ps.close();
			in.close();
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
     }
	public static void main(String[] args) throws IOException 
	{
		
	}

用hibenate.cfg.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

<session-factory>
<!--  
	<property name="hbm2ddl.auto">update</property> -->
	<property name="dialect">
		org.hibernate.dialect.MySQLDialect
	</property>
	<property name="connection.url">
		jdbc:mysql://localhost:3306/mydb
	</property>
	<property name="connection.username">root</property>
	<property name="connection.password">791129</property>
	<property name="connection.driver_class">
		com.mysql.jdbc.Driver
	</property>
	<property name="myeclipse.connection.profile">mysql</property>
	<property name="show_sql">true</property>
	<mapping resource="com/h/Photo.hbm.xml" />

</session-factory>

</hibernate-configuration>

 
Photo.hbm.xml  文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.h.Photo" table="photo" >
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="native" />
        </id>
        <property name="pname" type="java.lang.String">
            <column name="pname" length="30" not-null="true" />
        </property>
        <property name="myphoto" type="java.sql.Blob">
            <column name="myphoto" />
        </property>
    </class>
</hibernate-mapping>



程序文件SessionFactory .java
package com.h.util;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;


public class SessionFactory {

   
    private static String CONFIG_FILE_LOCATION = "/com/lyx/util/hibernate.cfg.xml";
	private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
    private  static Configuration configuration = new Configuration();    
    private static org.hibernate.SessionFactory sessionFactory;
    private static String configFile = CONFIG_FILE_LOCATION;

	static {
    	try {
			configuration.configure(configFile);
			sessionFactory = configuration.buildSessionFactory();
		} catch (Exception e) {
			System.err
					.println("%%%% Error Creating SessionFactory %%%%");
			e.printStackTrace();
		}
    }
    private SessionFactory() {
    }
	
	
    public static Session getSession() throws HibernateException {
        Session session = (Session) threadLocal.get();

		if (session == null || !session.isOpen()) {
			if (sessionFactory == null) {
				rebuildSessionFactory();
			}
			session = (sessionFactory != null) ? sessionFactory.openSession()
					: null;
			threadLocal.set(session);
		}

        return session;
    }

	
	public static void rebuildSessionFactory() {
		try {
			configuration.configure(configFile);
			sessionFactory = configuration.buildSessionFactory();
		} catch (Exception e) {
			System.err
					.println("%%%% Error Creating SessionFactory %%%%");
			e.printStackTrace();
		}
	}

	
    public static void closeSession() throws HibernateException {
        Session session = (Session) threadLocal.get();
        threadLocal.set(null);

        if (session != null) {
            session.close();
        }
    }

	
	public static org.hibernate.SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	
	public static void setConfigFile(String configFile) {
		SessionFactory.configFile = configFile;
		sessionFactory = null;
	}

	public static Configuration getConfiguration() {
		return configuration;
	}

}


pojo 文件
package com.h;
import java.sql.Blob;
/**
 * Photo entity. @author MyEclipse Persistence Tools
 */

@SuppressWarnings("serial")
public class Photo implements java.io.Serializable {



	private Integer id;
	private String pname;
	private Blob myphoto;


	public Photo() {
	}

	
	public Photo(String pname) {
		this.pname = pname;
	}

	public Integer getId() {
		return this.id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getPname() {
		return this.pname;
	}

	public void setPname(String pname) {
		this.pname = pname;
	}

	public Blob getMyphoto() {
		return myphoto;
	}

	
	public void setMyphoto(Blob myphoto) {
		this.myphoto = myphoto;
	}


}


session操作文件
 package com.h;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.SQLException;
import java.util.List;

import com.h.util.SessionFactory;

import org.hibernate.Hibernate;
import org.hibernate.Session;

/**
 * @author 李亚希 版权所有 :天豪工作室 2009-9-21
 */
public class PhotoDao {

	public PhotoDao() {

	}

	/**
	 * @param fromName  将要存入数据库的图片文件名
	 * @param toName    表中的列---定义的新的图片名
	 */
	public void save(String  fromName,   String  toName ) {

		try {
			Session session = SessionFactory.getSession();
			File ff = new File(fromName);
			FileInputStream fis = new FileInputStream(ff);
			Blob bbb = Hibernate.createBlob(fis);
			Photo pp = new Photo();
			pp.setPname(toName);
			pp.setMyphoto(bbb);
			session.save(pp);
			System.out.println(pp.getId());
			session.close();
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
     
	/**
	 * @param id    获取行数据的id值
	 * @param outputFileName  输出的文件名
	 */
	public void getById(int id) {
		try{
			Session session = SessionFactory.getSession();
			Photo p = (Photo) session.get(Photo.class, id);
			System.out.println(p.getId() + "\t" + p.getPname());
			Blob b = p.getMyphoto();
			InputStream in = b.getBinaryStream();
			File f = null;
			OutputStream out = null;
			f = new File(p.getPname());
			out = new BufferedOutputStream(new FileOutputStream(f));
			byte[] buf = new byte[1024];
			int i = 0;
			while ((i = in.read(buf)) != -1)
			{
				out.write(buf);
			}
			session.close();
		}catch(IOException  e)
		{
			e.printStackTrace();
			
		} catch (SQLException e) {
			
			e.printStackTrace();
		}

	}

	@SuppressWarnings("unchecked")
	public void getAll()  throws  IOException, SQLException  
	{
		Session session = SessionFactory.getSession();
		List ps = session.createQuery("from   Photo").list();
		System.out.println("ps.size=====" + ps.size());
		if (ps.size() > 0) {
			for (int i = 0; i < ps.size(); i++) {
				InputStream in = null;
				OutputStream out = null;
				Blob b = null;
				File f = null;
				Photo p = (Photo) ps.get(i);
				System.out.println(p.getId() + "\t" + p.getPname());
				b = p.getMyphoto();
				in = b.getBinaryStream();
				f = new File(p.getPname());
				out = new BufferedOutputStream(new FileOutputStream(f));
				byte[] buf = new byte[1024];
				int j = 0;
				while ((j = in.read(buf)) != -1) {
					out.write(buf);
				}
				in.close();
				out.close();
			}
		}
		session.close();
	
	}
	public static void main(String[] args) throws SQLException, IOException 
	{
		PhotoDao  pd=new PhotoDao();
		//pd.save("b.jpg","bbbbbb.jpg");
		pd.getAll();
		
		
	}
}


  • src.rar (6.2 KB)
  • 描述: 源文件不含库
  • 下载次数: 73
分享到:
评论

相关推荐

    JAVA串口助手接收数据并解析数据存入MySQL数据库中

    总结,Java串口助手接收串口数据并存入MySQL数据库涉及了串口通信、数据解析、数据库操作等多个技术环节。通过合理设计和实现,这样的工具能有效地帮助我们收集和存储来自串口设备的数据,为数据分析和应用提供支持...

    java将excel数据读取存入mysql数据库中

    在Java编程领域,将Excel数据读取并存储到MySQL数据库是一项常见的任务,特别是在数据分析、报表生成或系统集成等场景中。下面将详细讲解这个过程涉及的主要知识点。 首先,我们需要了解如何使用Java处理Excel文件...

    在java web中显示存入mysql数据库的图片

    至此,我们已经完成了在Java Web中显示存入MySQL数据库的图片的基本流程。值得注意的是,虽然这种方法在小规模应用中可行,但随着数据量增大,可能会面临性能问题,因为频繁的BLOB操作会加重数据库负担。更推荐的...

    将图片存入mysql数据库中

    在本场景中,我们将探讨如何将图片存入MySQL数据库,特别是针对用户头像的存储和管理。 首先,我们需要理解MySQL数据库对二进制数据的支持。在MySQL中,可以使用BLOB(Binary Large Object)类型的字段来存储图片...

    毕设代码2:java实现接收onenet云平台中四条河流水质数据,处理后存入MySQL数据库中

    1. 运行waterMain,该程序连接onenet云平台,获取4条河流的最新数据信息,处理数据后,连接MySQL数据库,只把最新的数据信息存入数据库中 2. 可部署到自己服务器中与毕设代码1结合使用 爱吃凉拌辣芒果 2022年6月...

    java使用javacsv读取csv文件 导入Mysql数据库

    在Java编程中,将CSV(逗号分隔值)文件的数据导入到MySQL数据库是一项常见的任务。这个过程涉及几个关键步骤,包括读取CSV文件、解析数据、建立与数据库的连接以及执行SQL插入语句。本篇文章将详细讲解如何使用java...

    java中读取shp文件数据存入数据库

    shp文件:地理信息系统,也被称作GIS,它主要的扩展类型是SHAPEFILE (.SHP),一个包含了矢量地理空间数据的流行文件格式,描述了几何形态,点,线和多边形...该方法通过java代码实现将shp文件的数据读取以及存入数据库

    java实现上传图片存入到数据库

    接着,我们需要将图片数据存入数据库。在大多数情况下,数据库不会直接存储二进制大对象(BLOB),而是存储二进制数据的引用或路径。以MySQL为例,我们可以创建一个包含图片ID、名称和二进制数据的表: ```sql ...

    图片存入mySql数据库.pdf

    从给定的文件信息来看,内容涉及了如何在MySQL数据库中存储图片数据的技术细节,以及相关的JSP页面和Java代码实现。接下来将详细说明这些知识点。 首先,文件中提到了创建数据库表的SQL语句,用于存储图片数据。...

    esp8266上传温湿度数据到本地java服务器并将数据存到数据库

    接下来,为了将数据持久化存储,你需要配置一个数据库。常见的选择有MySQL、PostgreSQL或者MongoDB。在Java程序中,你可以使用JDBC(Java Database Connectivity)来连接数据库。在数据库配置中,你需要提供数据库...

    Java爬虫获取网页表格数据保存到MySQL

    Java爬虫获取网页表格数据并保存到MySQL数据库,包含完整代码

    利用POI解析excel并存入数据库demo

    在这个"利用POI解析excel并存入数据库demo"中,我们将关注如何使用 POI 库来读取 Excel 文件,并将数据有效地存入 MySQL 数据库。 首先,要开始使用 POI,你需要在你的项目中引入相应的依赖。如果你使用的是 Maven...

    Java代码 MySql导出到SqlLite

    7. **数据转换**: 由于MySQL和SQLite的数据类型可能有所不同,程序需要处理数据类型的转换,确保从MySQL获取的数据可以正确存入SQLite。 8. **批量操作**: 为了提高效率,通常会使用批量插入或更新操作,而不是一条...

    使用java解析XML文件,解析完之后将解析结果导入mysql数据库中

    本教程将介绍如何使用Java解析XML文件,并将解析结果导入MySQL数据库。 首先,我们需要引入处理XML的Java库——JAXB(Java Architecture for XML Binding)和DOM(Document Object Model)API。JAXB用于对象与XML...

    接收NetFlow数据并导入Mysql数据库的Java工具

    标题中的“接收NetFlow数据并导入Mysql数据库的Java工具”指的是一个利用Java编程语言开发的应用,该应用能够处理从网络设备上收集的NetFlow数据,并将这些数据存储到MySQL数据库中。NetFlow是一种网络流量监测协议...

    调用天气接口存入数据库---mysql

    本项目涉及的主题是“调用天气接口存入数据库—MySQL”,这是一套实现从网络获取天气预报数据并将其存储到MySQL数据库的流程。下面我们将详细探讨这个过程中的关键知识点。 首先,我们需要了解“天气接口”。这是一...

    用Jena将本体文件存入MySQL数据库的实现方法

    总结来说,将本体文件存入MySQL数据库,需要正确配置Jena、数据库和Java环境,解决版本兼容性问题,以及使用Jena API进行模型的创建、加载和操作。这个过程虽然可能遇到挑战,但通过理解这些基本步骤和调试技巧,...

    Java+mysql本地图片上传数据库及下载示例

    在Java编程中,将本地图片上传到MySQL数据库以及从数据库下载图片是一项常见的任务,尤其在构建Web应用时。本文将详细解析如何实现这个过程,并基于给出的代码进行讲解。 首先,我们需要在数据库中创建一个用于存储...

    java将图片写入数据库,并读出来(blob clob)

    这个过程通常涉及到Blob和Clob数据类型,它们是Java中的两种特殊对象,用于存储大对象(LOB)。Blob用于存储二进制数据,如图片、音频或视频文件,而Clob则用于存储字符数据,比如长文本。以下是如何使用Java处理...

Global site tag (gtag.js) - Google Analytics