图片文件存入mysql的方法_用Java 将图片存入Mysql 并读出的方法

首先来创建我们的数据库,

create database Image;

use Image;

create table country (

id int primary key auto_increment,

name varchar(30),

flag blob,

description varchar(255)

);

数据库创建完毕,下面是Java 的程序代码,它实现的功能是从一个目录中读入一张图片(china.gif) ,然后在把它输出在另一个目录中(1.gif).

*****************************************************************************************************

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

/**

author@tongxiao

time:2007.09.14

*/

public class TestImage {private static final String URL = "jdbc:mysql://localhost/Image?user=root&password=root&useUnicode=true";private Connection conn = null;private PreparedStatement pstmt = null;private ResultSet rs = null;private File file = null;private InputStream inputImage = null;private OutputStream outputImage = null;

public void blobInsert(String infile) {   try {    Class.forName("com.mysql.jdbc.Driver");    System.out.println("Driver loaded!");

conn = DriverManager.getConnection(URL);    System.out.println("Database connected!");

pstmt = conn      .prepareStatement("insert into Country (name,flag,description) values (?,?,?)");    pstmt.setString(1, "china");

file = new File(infile);    try {     inputImage = new FileInputStream(file);    } catch (FileNotFoundException e) {

e.printStackTrace();    }    pstmt.setBinaryStream(2, inputImage, (int) (file.length()));

pstmt.setString(3, "A flag of China");    pstmt.executeUpdate();    System.out.println("commit successfully");   } catch (ClassNotFoundException e) {

e.printStackTrace();   } catch (SQLException e) {    e.printStackTrace();   } finally {    try {     inputImage.close();     pstmt.close();     conn.close();    } catch (Exception e) {     e.printStackTrace();    }   }

}

public void readBolb(String path, int id) {   InputStream is = null;   byte[] buffer = new byte[4096];

try {    Class.forName("com.mysql.jdbc.Driver");    System.out.println("Driver loaded!");

conn = DriverManager.getConnection(URL);    System.out.println("Database connected!");

pstmt = conn      .prepareStatement("select flag from Country where id =?");    System.out.println("select ok");

pstmt.setInt(1, id);    rs = pstmt.executeQuery();

rs.next();    file = new File(path);    if (!file.exists()) {     try {      file.createNewFile();     } catch (IOException e) {

e.printStackTrace();     }

}    try {     outputImage = new FileOutputStream(file);     System.out.println(outputImage.toString());    } catch (FileNotFoundException e) {

e.printStackTrace();    }

Blob blob = rs.getBlob("flag");    is = blob.getBinaryStream();    try {     System.out.println(is.available());    } catch (IOException e2) {         e2.printStackTrace();    }    try {     System.out.println(is.available());    } catch (IOException e1) {

e1.printStackTrace();    }

int size = 0;    try {     while ((size = is.read(buffer)) != -1) {      System.out.println(size);      outputImage.write(buffer, 0, size);

}    } catch (IOException e) {

e.printStackTrace();    }

} catch (ClassNotFoundException e) {

e.printStackTrace();   } catch (SQLException e) {

e.printStackTrace();   } finally {    try {     is.close();     outputImage.close();     pstmt.close();     conn.close();    } catch (Exception e) {     e.printStackTrace();    }   }

}

public static void main(String[] args) {

new TestImage().blobInsert("c:\\TDdownload\\china.gif");   new TestImage().readBolb("c:\\1.gif", 1);}

}

程序执行完你将在相应的目录下看到一张输出的图片.同时在Mysql 客户端使用:select * from country;将显示一堆的乱麻,这就正常.说明图片已经存入Mysql 中.到次本次试验完毕!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值