把本地硬盘里的图片存储到oracle数据库里blob的实现

转载自:http://heisetoufa.iteye.com/blog/227243

 

关键字: 图片 上传 数据库

数据库是oracle,字段是blob,代码语言是java,上传的可以是图片也可以是其他大文件,显示在浏览器里和保存在硬盘上不写在这篇文章里,写在下篇里

Java代码 复制代码
  1. import java.io.BufferedInputStream;   
  2. import java.io.FileInputStream;   
  3. import java.io.OutputStream;   
  4. import java.sql.Blob;   
  5. import java.sql.Connection;   
  6. import java.sql.DriverManager;   
  7. import java.sql.ResultSet;   
  8. import java.sql.SQLException;   
  9. import java.sql.Statement;   
  10.   
  11. import javax.swing.JFileChooser;   
  12.   
  13. import oracle.jdbc.driver.OracleConnection;   
  14.   
  15. public class Write   
  16. {   
  17.  public static void main(String[] args)   
  18.  {   
  19.   try {   
  20.    Writewatdb = new Write();   
  21.    watdb.sendToDb();   
  22.   } catch (SQLException e) {   
  23.    e.printStackTrace();   
  24.   } catch (ClassNotFoundException e) {   
  25.    e.printStackTrace();   
  26.   }   
  27.  }   
  28.  Connection conn;   
  29.  Statement stmt;   
  30.     
  31.  ResultSet rs;   
  32.  int bufferSize;   
  33.     
  34.  public Write() throws SQLException, ClassNotFoundException    
  35.  {   
  36.   String connectString;   
  37.   Class.forName("oracle.jdbc.driver.OracleDriver");   
  38.   connectString = "jdbc:oracle:thin:@192.168.1.134:1521:zhpt";   
  39.   conn = (OracleConnection)   
  40.   DriverManager.getConnection(connectString, "dzjc","dzjc");   
  41.     
  42.   stmt = conn.createStatement();   
  43.  }   
  44.  public void sendToDb()    
  45.  {   
  46.         int amount = 0;   
  47.   OutputStream out = null;   
  48.   BufferedInputStream in = null;   
  49.   JFileChooser chooser = new JFileChooser();   
  50.   int returnVal = chooser.showOpenDialog(null);   
  51.   if (returnVal == JFileChooser.APPROVE_OPTION)   
  52.   {   
  53.    pathname = chooser.getSelectedFile().getAbsolutePath();   
  54.    name = chooser.getSelectedFile().getName();   
  55.    chooser = null;   
  56.   }   
  57.   else  
  58.   {   
  59.    System.out.println("没有找到文件!");   
  60.    System.out.println("程序非正常结束...");   
  61.    return;   
  62.   }   
  63.   try  
  64.   {   
  65.    conn.setAutoCommit(false);   
  66.    stmt.executeUpdate("insert into dzjc_img(img) values (empty_blob())");   
  67.    rs = stmt.executeQuery("select img from dzjc_img for update");   
  68.    if (rs.next())    
  69.    {   
  70.     Blob blob = rs.getBlob("img");   
  71.     out = ( (oracle.sql.BLOB) blob).getBinaryOutputStream();   
  72.     bufferSize = ( (oracle.sql.BLOB) blob).getBufferSize();   
  73.     in = new BufferedInputStream(new FileInputStream(pathname), bufferSize);   
  74.     
  75.     byte[] b = new byte[bufferSize];   
  76.     int count = in.read(b, 0, bufferSize);   
  77.     while (count != -1)    
  78.     {   
  79.      out.write(b, 0, count);   
  80.      amount += count;   
  81.      System.out.println("处理了" + amount + "字节.");   
  82.      count = in.read(b, 0, bufferSize);   
  83.      System.out.println("处理了" + amount + "字节,成功.");   
  84.     }   
  85.     out.close();   
  86.     out = null;   
  87.     in.close();   
  88.     in = null;   
  89.     conn.commit();   
  90.    }   
  91.   }   
  92.   catch (Exception e)    
  93.   {   
  94.    e.printStackTrace();   
  95.    try    
  96.    {   
  97.     conn.rollback();   
  98.    }   
  99.    catch (Exception ignored) {}   
  100.   }   
  101.   finally    
  102.   {   
  103.    if (out!=nulltry{out.close();} catch(Exception igored){}   
  104.    if (in!=nulltry{in.close();} catch(Exception igored){}   
  105.   }   
  106.  }   
  107. }  
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.JFileChooser;

import oracle.jdbc.driver.OracleConnection;

public class Write
{
 public static void main(String[] args)
 {
  try {
   Writewatdb = new Write();
   watdb.sendToDb();
  } catch (SQLException e) {
   e.printStackTrace();
  } catch (ClassNotFoundException e) {
   e.printStackTrace();
  }
 }
 Connection conn;
 Statement stmt;
 
 ResultSet rs;
 int bufferSize;
 
 public Write() throws SQLException, ClassNotFoundException 
 {
  String connectString;
  Class.forName("oracle.jdbc.driver.OracleDriver");
  connectString = "jdbc:oracle:thin:@192.168.1.134:1521:zhpt";
  conn = (OracleConnection)
  DriverManager.getConnection(connectString, "dzjc","dzjc");
 
  stmt = conn.createStatement();
 }
 public void sendToDb() 
 {
        int amount = 0;
  OutputStream out = null;
  BufferedInputStream in = null;
  JFileChooser chooser = new JFileChooser();
  int returnVal = chooser.showOpenDialog(null);
  if (returnVal == JFileChooser.APPROVE_OPTION)
  {
   pathname = chooser.getSelectedFile().getAbsolutePath();
   name = chooser.getSelectedFile().getName();
   chooser = null;
  }
  else
  {
   System.out.println("没有找到文件!");
   System.out.println("程序非正常结束...");
   return;
  }
  try
  {
   conn.setAutoCommit(false);
   stmt.executeUpdate("insert into dzjc_img(img) values (empty_blob())");
   rs = stmt.executeQuery("select img from dzjc_img for update");
   if (rs.next()) 
   {
    Blob blob = rs.getBlob("img");
    out = ( (oracle.sql.BLOB) blob).getBinaryOutputStream();
    bufferSize = ( (oracle.sql.BLOB) blob).getBufferSize();
    in = new BufferedInputStream(new FileInputStream(pathname), bufferSize);
 
    byte[] b = new byte[bufferSize];
    int count = in.read(b, 0, bufferSize);
    while (count != -1) 
    {
     out.write(b, 0, count);
     amount += count;
     System.out.println("处理了" + amount + "字节.");
     count = in.read(b, 0, bufferSize);
     System.out.println("处理了" + amount + "字节,成功.");
    }
    out.close();
    out = null;
    in.close();
    in = null;
    conn.commit();
   }
  }
  catch (Exception e) 
  {
   e.printStackTrace();
   try 
   {
    conn.rollback();
   }
   catch (Exception ignored) {}
  }
  finally 
  {
   if (out!=null) try{out.close();} catch(Exception igored){}
   if (in!=null) try{in.close();} catch(Exception igored){}
  }
 }
}

 可直接运行

数据库就自己建吧,建个类型为blob型的就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值