JDBC 使用 mysql Blob类型

package com.zf.test;

import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import org.apache.commons.io.IOUtils;

public class JDBCTest {
	
	private final String url = "jdbc:mysql:///ssh";
	private final String driverClass = "com.mysql.jdbc.Driver";
	private final String username  = "zf";
	private final String password = "0";
	
	{
		try {
			Class.forName(driverClass);   
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} 
	}
	
	/* 获取连接 */
	public Connection openConnection(){
		try {
			return DriverManager.getConnection(url, username , password);
		} catch (SQLException e) {
			e.printStackTrace();
			return null ;
		}
	}
	
	/*创建表*/
	public void createTable(){
		try {
			Connection conn = openConnection();
			boolean delete = conn.prepareStatement("drop table if exists tab").execute();
			System.out.println(delete ? "删除tab 失败" : "删除tab成功");
			PreparedStatement ps =
				conn.prepareStatement  
				("CREATE TABLE `tab` (`id`  integer NULL AUTO_INCREMENT ,`file`  blob NULL ,`img`  blob NULL ,PRIMARY KEY (`id`))");
			boolean result = ps.execute();
			System.out.println(result ? "创建tab失败" : "创建tab成功");
			
			ps.close();  
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();  
		}
	}
	
	/*插入一条记录*/
	public void insertTotab(){
		try {
			Connection conn = openConnection();
			PreparedStatement ps =
					conn.prepareStatement("insert into tab(file , img) values(? , ?)");
			//设置类型为Blob
			ps.setBlob(1, new FileInputStream(new File("c:/xxx.txt")));
			ps.setBlob(2 , new FileInputStream(new File("C:/logo.gif")) );
			int i = ps.executeUpdate();  
			System.out.println(i > 0 ? "保存成功" : "保存失败");
			ps.close();
			conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/* 读取内容 */
	public void readContent(){
		try {
			Connection conn = openConnection();
			PreparedStatement ps =
					conn.prepareStatement("select * from tab");
			ResultSet rs = ps.executeQuery();
			if(rs.next()){
				
				Blob file = rs.getBlob(2);
				Blob img = rs.getBlob(3);

				System.out.println("------------file-----------");
				//读取文件流
				System.out.println(
						IOUtils.toString(file.getBinaryStream()));
				
				//读取图片流
				BufferedImage bi = ImageIO.read(img.getBinaryStream());
				
				//将图片流转换为图片显示出来
				showImg(bi); 
				System.out.println("读取成功");
			}
			
			rs.close();
			ps.close();  
			conn.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/* 使用JFrame显示图片 */
	public void showImg(final BufferedImage bi ){
		JFrame frame = new JFrame("图片测试"){
			@Override
			public void paint(Graphics g) {
				super.paint(g);
				g.drawImage(bi, 50 , 50 , null );
			}  
		};
		frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setBounds(0, 0, 500, 500);
	}
	
	public static void main(String[] args) {
		JDBCTest jt = new JDBCTest();
		jt.createTable();
		jt.insertTotab();
		jt.readContent();
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值