日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用存儲過程實現(xiàn)oracle存圖片的方法

oracle存圖片是我們經(jīng)常需要實現(xiàn)的功能,下面就教您一個使用存儲過程實現(xiàn)oracle存圖片的方法,如果您在oracle存圖片方面遇到過問題,不妨一看。

創(chuàng)新互聯(lián)建站是專業(yè)的寧晉網(wǎng)站建設(shè)公司,寧晉接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行寧晉網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

要在oracle存圖片 用blob類型,首先在數(shù)據(jù)庫里建立:

--連接到管理員

 
 
 
  1. conn sys/tbsoft as sysdba; 

--為scott用戶授權(quán)

 
 
 
  1. grant create any directory to scott; 

--回到scott用戶

 
 
 
  1. conn scott/tiger; 

--創(chuàng)建存儲圖片的表

 
 
 
  1. CREATE TABLE IMAGE_LOB (T_ID VARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL); 

--創(chuàng)建存儲圖片的目錄

 
 
 
  1. CREATE OR REPLACE DIRECTORY IMAGES AS 'C:\picture'; 

--在c:下自己建一個叫picture的文件夾

 
 
 
  1. CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS 

F_LOB BFILE;--文件類型

B_LOB BLOB;

 
 
 
  1. BEGIN     
  2. iNSERT INTO IMAGE_LOB (T_ID, T_IMAGE)     
  3. VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB    

--插入空的blob

 
 
 
  1. F_LOB:= BFILENAME ('IMAGES', FILENAME); 

--獲取指定目錄下的文件

 
 
 
  1. DBMS_LOB.FILEOPEN(F_LOB, DBMS_LOB.FILE_READONLY); 

--以只讀的方式打開文件

 
 
 
  1. DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,DBMS_LOB.GETLENGTH (F_LOB)); 

--傳遞對象

 
 
 
  1. DBMS_LOB.FILECLOSE (F_LOB); 

--關(guān)閉原始文件

 
 
 
  1. COMMIT;  
  2. END;  
  3. /  

--在C:\picture下放一張圖片1.gif

--將該圖片存入表

 
 
 
  1. call IMG_INSERT('1','1.gif'); 

然后創(chuàng)建一個web項目 連接數(shù)據(jù)庫后 創(chuàng)建一個BlobDAO類 用來取出表中的blob類型圖片

 
 
 
  1. public class BlobDAO {  
  2.     private static final BlobDAO instance = new BlobDAO();  
  3.     private Connection conn = null;  
  4.     private BlobDAO() {  
  5.     }  
  6.     public static BlobDAO getInstance() {  
  7.         return instance;  
  8.     }  
  9.     private void initConn() {  
  10.         conn = DBAccess.getInstance().getConn();  
  11.     }  
  12.     public byte[] getImage(String imgname) {  
  13.         BufferedInputStream ins;//取得BLOB的IO流  
  14.         byte[] bt = null;  
  15.         initConn();  
  16.         Blob bo = null;  
  17.         PreparedStatement ps = null;  
  18.         ResultSet rs = null;  
  19.         String sql = "select T_IMAGE from IMAGE_LOB where t_id=?";  
  20.         try {  
  21.               ps = conn.prepareStatement(sql);  
  22.               ps.setString(1, imgname);  
  23.               rs = ps.executeQuery();  
  24.               if (rs.next()) {  
  25.                   bo = rs.getBlob("T_IMAGE");  
  26.                   try {  
  27.                       ins = new BufferedInputStream(bo.getBinaryStream());  
  28.                       int bufferSize = (int) bo.length();//取得BLOB的長度  
  29.                       bt = new byte[bufferSize];  
  30.                       try {  
  31.                             ins.read(bt, 0, bufferSize);  
  32.                       } catch (IOException e) {  
  33.                             // TODO Auto-generated catch block  
  34.                             e.printStackTrace();  
  35.                       }  
  36.                       //建立字節(jié)緩存  
  37.                   } catch (SQLException e) {  
  38.                       // TODO Auto-generated catch block  
  39.                       e.printStackTrace();  
  40.                   }  
  41.               }  
  42.         } catch (SQLException e) {  
  43.               // TODO Auto-generated catch block  
  44.               e.printStackTrace();  
  45.         } finally {  
  46.               try {  
  47.                   rs.close();  
  48.                   ps.close();  
  49.                   conn.close();  
  50.               } catch (SQLException e) {  
  51.                   // TODO Auto-generated catch block  
  52.                   e.printStackTrace();  
  53.               }  
  54.         }  
  55.         return bt;  
  56.     }  
  57. }  
  58.  

在action里面調(diào)用getImage()方法并顯示圖片在頁面上

 
 
 
  1. public ActionForward execute(ActionMapping mapping, ActionForm form,  
  2.               HttpServletRequest request, HttpServletResponse response) {  
  3.         // TODO Auto-generated method stub  
  4.              BlobDAO blobDAO = BlobDAO.getInstance();  
  5.         byte[] bs = blobDAO.getImage("1");  
  6.  
  7.         try {  
  8.  
  9.               response.getOutputStream().write(bs);  
  10.         } catch (IOException e) {  
  11.               // TODO Auto-generated catch block  
  12.               e.printStackTrace();  
  13.         }  
  14.         return null;  
  15.     }  

添加圖片到數(shù)據(jù)庫

請在c盤下放入圖片--c:\\4.gif

 
 
 
  1. public void savaImg(String imgId) {  
  2.            //傳的是存入數(shù)據(jù)庫圖片的id  
  3.            initConn();  
  4.            Statement st = null;  
  5.            BLOB blob = null; //圖片類型  
  6.            OutputStream outputStream = null; //輸出流  
  7.            File file = null; //文件  
  8.            InputStream inputStream = null; //輸入流  
  9.            ResultSet rs = null;  
  10.            try {  
  11.                  conn.setAutoCommit(false); //事物由程序員操作  
  12.                  st = conn.createStatement();  
  13.                  st.executeQuery("insert into IMAGE_LOB values('"+ imgId +"',empty_blob())");  
  14.                  rs = st.executeQuery("select T_IMAGE from IMAGE_LOB where t_id='"+ imgId +"' for update");  
  15.                  if (rs.next()) {  
  16.                        blob = (BLOB) rs.getBlob(1);  
  17.                        outputStream = blob.getBinaryOutputStream();  
  18.                        file = new File("c:\\4.gif");  
  19.                        inputStream = new FileInputStream(file);  
  20.                        byte[] b = new byte[blob.getBufferSize()];  
  21.                        int len = 0;  
  22.                        while ((len = inputStream.read(b)) != -1) {  
  23.                              System.out.println(len);  
  24.                              outputStream.write(b, 0, len);  
  25.                        }  
  26.                  }  
  27.            } catch (SQLException e) {  
  28.                  // TODO Auto-generated catch block  
  29.                  e.printStackTrace();  
  30.            } catch (FileNotFoundException e) {  
  31.                  // TODO Auto-generated catch block  
  32.                  e.printStackTrace();  
  33.            } catch (IOException e) {  
  34.                  // TODO Auto-generated catch block  
  35.                  e.printStackTrace();  
  36.            } finally {  
  37.                  try {  
  38.                        inputStream.close();  
  39.                        outputStream.flush();  
  40.                        outputStream.close();  
  41.                        rs.close();  
  42.                        st.close();  
  43.                        conn.commit();  
  44.                        conn.close();  
  45.                  } catch (IOException e) {  
  46.                        // TODO Auto-generated catch block  
  47.                        e.printStackTrace();  
  48.                  } catch (SQLException e) {  
  49.                        // TODO Auto-generated catch block  
  50.                        e.printStackTrace();  
  51.                  }  
  52.            }  
  53.      }  
  54.  
  55.    

【編輯推薦】

oracle樹查詢的實現(xiàn)

oracle查詢當前時間的實現(xiàn)

帶您了解Oracle層次查詢

帶您深入了解Oracle臨時表

Oracle with語句的用法


分享標題:使用存儲過程實現(xiàn)oracle存圖片的方法
鏈接分享:http://www.5511xx.com/article/djseici.html