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

Blob存储读取图片

    博客分类:
  • Jdbc
阅读更多
package com.jdbctest.clobtest;
import java.io.BufferedInputStream;
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.*;

import com.jdbctest.Util.JDBCUtil;

public class BlobTest {
		public static void main(String args[]){
			Connection conn = null;
			Statement stmt = null;
			PreparedStatement ps = null;
			ResultSet rs = null;
			
			//获取数据库对象
			conn = JDBCUtil.getConnection();
			//表存在则删除它
			String sql = "DROP TABLE IF EXISTS blobtest";
			
			try {
				stmt = conn.createStatement();
				System.out.println(sql);
				stmt.executeUpdate(sql);
				//创建表
				sql = "CREATE TABLE blobtest(" + 
				"b_id INT NOT NULL AUTO_INCREMENT,"+
				"b_title VARCHAR(50),"+
				"b_text LongBlob,"+
				"PRIMARY KEY(b_id)"+
				")";
			System.out.println(sql);
			stmt.executeUpdate(sql);
			System.out.println("创建数据表成功!");
			
			sql="INSERT INTO blobtest(b_title,b_text)VALUES(?,?)";
			ps = conn.prepareStatement(sql);
			//插入图片
			//File file = new File("F:\\image\\yahoo.jpg");
			File file = new File("d:\\wuyu\\image\\sea.jpg");
			InputStream inputStream = new FileInputStream(file);
			//BufferedInputStream bis=new BufferedInputStream(inputStream);
			
			//以前的时候直接使用setBinaryStream就可以保存图片,但
			//数据库的字符集换成 gbk后就不能用了,一直提示参数类型不匹配,在网上查了一下,
			//直接向数据库中存byte可解决
			//ps.setString(1, file.getName());
			//ps.setBinaryStream(2,inputStream,file.length());
			//ps.executeUpdate();
			try {
				ps.setString(1, file.getName());
				//新建一byte数组
				byte[] buf=new byte[inputStream.available()];
				//将文件读入到byte[]中
				inputStream.read(buf);
				ps.setBytes(2, buf);
				ps.executeUpdate();
				System.out.println("插入成功!");
			} catch (IOException e1) {
				System.out.println("保存图片到数据库成功!");
				e1.printStackTrace();
			}
			
			
			
			//读取数据
			
			sql = "SELECT b_title,b_text FROM blobtest";
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			while(rs.next()){
				System.out.println("图片名: "+rs.getString("b_title"));
				//System.out.println("电影名: "+rs.getString("b_title"));
				Blob blob = rs.getBlob("b_text");
				File file2 = new File("d:\\wuyu\\sea.jpg");
				OutputStream outputStream = new FileOutputStream(file2);
				try {
					outputStream.write(blob.getBytes(1,(int)blob.length()));
				} catch (IOException e) {
					e.printStackTrace();
				}
				//打印出来的为对象
				System.out.println("图片内容: "+ blob.getBinaryStream());
				
			}
			} catch (SQLException e) {
				e.printStackTrace();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			}finally{
				JDBCUtil.close(rs, stmt, conn);
			}
			
		}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics