• Oracle数据库插入图片和读取图片


    package com.basicSql.scroll_page;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import com.basicSql.connUtil.Conndb;
    
    public class SavePic {
    	public static Connection conn = null;
    	public static PreparedStatement pStmt = null;
    
    	/**
    	 * 数据库中加入图片等文件
    	 */
    	public static void InsertPic() {
    		String sql = "insert into teacher(id,name,photo) values(teacher_seq.nextval,?,?)";
    		try {
    			conn = Conndb.connOracle();
    			pStmt = conn.prepareStatement(sql);
    
    			pStmt.setString(1, "signma");
    
    			// 数据库插入图片/word/excel等
    			File f = new File("src/pic.jpg");
    			FileInputStream fis = new FileInputStream(f);
    			pStmt.setBinaryStream(2, fis, (int) f.length());
    
    			int n = pStmt.executeUpdate();
    			System.out.println(n + "条记录插入");
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} finally {
    			Conndb.pStmtClose(pStmt);
    			Conndb.closeConn(conn);
    		}
    	}
    
    	/**
    	 * 从数据库中取出图片等文件
    	 */
    	public static void getPic() {
    		String sql = "select id,name,photo from teacher where id=?";
    		try {
    			conn = Conndb.connOracle();
    			pStmt = conn.prepareStatement(sql);
    
    			pStmt.setInt(1, 2);
    
    			ResultSet rs = pStmt.executeQuery();
    			if (rs.next()) {
    				FileOutputStream fos = new FileOutputStream(new File("abc.jpg"));
    				InputStream is = rs.getBinaryStream("photo");
    
    				byte[] buffer = new byte[4 * 1024];
    				int length = 0;
    				while ((length = is.read(buffer)) != -1) {
    					fos.write(buffer, 0, length);
    				}
    				fos.flush();
    				fos.close();
    				is.close();
    			}
    
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			Conndb.pStmtClose(pStmt);
    			Conndb.closeConn(conn);
    		}
    	}
    }
    

      

  • 相关阅读:
    杭电2095--find your present (2) (异或)
    南阳168--房间安排(区间覆盖)
    南阳954--N!(数学)
    南阳--69(数的长度)
    杭电--N!(大数)
    杭电1005--Number Sequence
    杭电1108--最小公倍数
    动态规划:最长上升子序列(二分算法 nlogn)
    动态规划:最长上升子序列之基础(经典算法 n^2)
    vector函数用法
  • 原文地址:https://www.cnblogs.com/xrhou12326/p/3813445.html
Copyright © 2020-2023  润新知