您的位置:首页 > 数据库 > MySQL

JDBC 使用 mysql Blob类型

2012-12-06 15:22 519 查看
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();
}

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