您的位置:首页 > 编程语言 > Java开发

Java实现MySQL图片存取操作

2013-10-28 19:13 399 查看
存入操作

[java]
view plaincopyprint?

/*
---------------表结构------------
表名: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);

}

}
}

[java] 
view plaincopyprint?

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);//关闭相关连接
  
        }  
    }  
}  

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);//关闭相关连接
		}
	}
}


分享到:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: