国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
Oracle中插入圖片并顯示(用BLOB類型)
Oracle中插入圖片并顯示(用BLOB類型)
2011-09-22 15:16:51     我來說兩句      
收藏    
我要投稿

Oracle中插入圖片并顯示(用BLOB類型)
要在oracle里面存入圖片 用 blob類型


首先在數(shù)據(jù)庫里建立:

--連接到管理員
conn sys/tbsoft as sysdba;

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

grant create any directory to scott;

--回到scott用戶

conn scott/tiger;


--創(chuàng)建存儲圖片的表
CREATE TABLE IMAGE_LOB (T_ID VARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL);

--創(chuàng)建存儲圖片的目錄
CREATE OR REPLACE DIRECTORY IMAGES AS 'C:\picture';

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

CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS
F_LOB BFILE;--文件類型
B_LOB BLOB;
BEGIN
iNSERT INTO IMAGE_LOB (T_ID, T_IMAGE)
VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;
--插入空的blob
F_LOB:= BFILENAME ('IMAGES', FILENAME);
--獲取指定目錄下的文件
DBMS_LOB.FILEOPEN(F_LOB, DBMS_LOB.FILE_READONLY);
--以只讀的方式打開文件
DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,DBMS_LOB.GETLENGTH (F_LOB));
--傳遞對象
DBMS_LOB.FILECLOSE (F_LOB);
--關(guān)閉原始文件
COMMIT;
END;
/


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

--將該圖片存入表
call IMG_INSERT('1','1.gif');


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

Java代碼  收藏代碼

    public class BlobDAO { 
     
        private static final BlobDAO instance = new BlobDAO(); 
     
        private Connection conn = null; 
     
        private BlobDAO() { 
     
        } 
     
        public static BlobDAO getInstance() { 
            return instance; 
        } 
     
        private void initConn() { 
            conn = DBAccess.getInstance().getConn(); 
        } 
     
         
        public byte[] getImage(String imgname) { 
            BufferedInputStream ins;//取得BLOB的IO流 
            byte[] bt = null; 
     
            initConn(); 
            Blob bo = null; 
            PreparedStatement ps = null; 
            ResultSet rs = null; 
            String sql = "select T_IMAGE from IMAGE_LOB where t_id=?"; 
            try { 
                  ps = conn.prepareStatement(sql); 
                  ps.setString(1, imgname); 
                  rs = ps.executeQuery(); 
                  if (rs.next()) { 
                      bo = rs.getBlob("T_IMAGE"); 
     
                      try { 
                          ins = new BufferedInputStream(bo.getBinaryStream()); 
                          int bufferSize = (int) bo.length();//取得BLOB的長度 
                          bt = new byte[bufferSize]; 
                          try { 
                                ins.read(bt, 0, bufferSize); 
                          } catch (IOException e) { 
                                // TODO Auto-generated catch block 
                                e.printStackTrace(); 
                          } 
                          //建立字節(jié)緩存 
                      } catch (SQLException e) { 
                          // TODO Auto-generated catch block 
                          e.printStackTrace(); 
                      } 
     
                  } 
            } catch (SQLException e) { 
                  // TODO Auto-generated catch block 
                  e.printStackTrace(); 
            } finally { 
                  try { 
                      rs.close(); 
                      ps.close(); 
                      conn.close(); 
                  } catch (SQLException e) { 
                      // TODO Auto-generated catch block 
                      e.printStackTrace(); 
                  } 
            } 
     
            return bt; 
        } 
    } 

 

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

Java代碼  收藏代碼

    public ActionForward execute(ActionMapping mapping, ActionForm form, 
                  HttpServletRequest request, HttpServletResponse response) { 
            // TODO Auto-generated method stub 
             
            BlobDAO blobDAO = BlobDAO.getInstance(); 
             
            byte[] bs = blobDAO.getImage("1"); 
             
            try { 
                   
                  response.getOutputStream().write(bs); 
                   
            } catch (IOException e) { 
                  // TODO Auto-generated catch block 
                  e.printStackTrace(); 
            } 
             
            return null; 
        } 


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

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

Java代碼  收藏代碼

  public void savaImg(String imgId) {
           //傳的是存入數(shù)據(jù)庫圖片的id
           initConn();
           Statement st = null;
           BLOB blob = null; //圖片類型
           OutputStream outputStream = null; //輸出流
           File file = null; //文件
           InputStream inputStream = null; //輸入流
           ResultSet rs = null;
           try {
                 conn.setAutoCommit(false); //事物由程序員操作
                 st = conn.createStatement();
                 st.executeQuery("insert into IMAGE_LOB values('"+ imgId +"',empty_blob())");
                 rs = st.executeQuery("select T_IMAGE from IMAGE_LOB where t_id='"+ imgId +"' for update");
                 if (rs.next()) {
                       blob = (BLOB) rs.getBlob(1);
                       outputStream = blob.getBinaryOutputStream();
                       file = new File("c:\\4.gif");
                       inputStream = new FileInputStream(file);
                       byte[] b = new byte[blob.getBufferSize()];
                       int len = 0;
                       while ((len = inputStream.read(b)) != -1) {
                             System.out.println(len);
                             outputStream.write(b, 0, len);
                       }
                 }

           } catch (SQLException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
           } catch (FileNotFoundException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
           } catch (IOException e) {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
           } finally {
                 try {
                       inputStream.close();
                       outputStream.flush();
                       outputStream.close();
                       rs.close();
                       st.close();
                       conn.commit();
                       conn.close();
                 } catch (IOException e) {
                       // TODO Auto-generated catch block
                       e.printStackTrace();
                 } catch (SQLException e) {
                       // TODO Auto-generated catch block
                       e.printStackTrace();
                 }

           }
     }

 


操作完畢!

作者“669098238”
 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java里操作oracle執(zhí)行插入操作
動態(tài)加載jdbc驅(qū)動
hibernate 下不適用映射文件來保存blob圖片
Java創(chuàng)建TXT文件并進(jìn)行讀、寫、修改操作
javaMail例子
java中的讀文件
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服