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

xiaoxiao2021-03-01  15

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

 

关键字: 图片 上传 数据库

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

Java代码 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!=nulltry{out.close();} catch(Exception igored){}       if (in!=nulltry{in.close();} catch(Exception igored){}      }    }   }   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型的就行了

转载请注明原文地址: https://www.6miu.com/read-4200076.html

最新回复(0)