用Java 将图片存入Mysql 并读出

原创 2007年09月15日 00:00:00

我们要做的是将一张图片存入Mysql中,在Mysql中用Blob 来存储图片和音频等大的数据项.Blob 按其容量可分为四种,分别为:tinyblob,blob ,mediumblob, longblob.他们的大小分别为:256B,64KB,16MB,4GB.除了容量不同外,这四种的用法一个样.我们这次将用Blob.

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

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 中.到次本次试验完毕!

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

往MYSQL中插入,读写图片!

开发环境:MyEclipse+MySql 1,          随便找一个数据库建一张表,我这里用的是mysql数据库, (1)切换到mysql数据库:use mysql; (2)建表crea...
  • pzhtpf
  • pzhtpf
  • 2012-03-27 21:26
  • 18658

java 将图片存入mysql数据库中

目前想要将用于的头像存入到数据库中,也就是将图片存入到数据库中,下面是自己参考的代码 create table image(id int NOT NULL primary key auto_incr...

实现为用java访问mysql的blob—对图片进行存取

/** * Title: BlobPros.java * Project: test * Description: 把图片存入mysql中的blob字段,并取出 * Call Modu...

将图片存入mysql数据库中

  • 2015-04-04 14:52
  • 516KB
  • 下载

往MySQL中存储图片 ---java项目中

往MySQL中存储图片   1 介绍 在设计到数据库的开发中,难免要将图片或音频文件插入到数据库中的情况。一般来说,我们可以同过插入图片文件相应的存储位置,而不是文件本身,来避免直接向数据库里插...

java之二进制存取图片(MySQL数据库)

闲来无事,弄了个二进制读取图片,而非本地路径读取,仅供学习之用,大家多多指教!! 第一步建表: SQL: create table images_info(  image_id int(1...

Java实现MySQL图片存取

Java实现MySQL的图片存取
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)