kevin

奋斗的码农

把图片存到mysql数据库中

在百度bae的使用过程中发现文件丢失问题,百度文档是这样说明的

我就想着能不能把数据存到数据库中

网上看到了

 

package com.bai;


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=baipeng&useUnicode=true";
private Connection conn = null;
private PreparedStatement pstmt = null;//容器 放sql语句的
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");//命名name为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:\\Users\\peng\\Pictures\\1.jpg");
   new TestImage().readBolb("c:\\Users\\peng\\Pictures\\mysqlreadimage\\2.jpg", 1);
}
}

posted on 2016-03-01 10:11  存在00000  阅读(292)  评论(0)    收藏  举报

导航