<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 64,  comments - 9,  trackbacks - 0
    Oracle中插入圖片并顯示(用BLOB類型)
    要在oracle里面存入圖片 用 blob類型


    首先在數據庫里建立:

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

    --為scott用戶授權

    grant create any directory to scott;

    --回到scott用戶

    conn scott/tiger;


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

    --創建存儲圖片的目錄
    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);
    --關閉原始文件
    COMMIT;
    END;
    /


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

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


    然后創建一個web項目 連接數據庫后 創建一個BlobDAO類 用來取出表中的blob類型圖片

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


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

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

    添加圖片到數據庫

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

    Java代碼 復制代碼
    1. public void savaImg(String imgId) {   
    2.            //傳的是存入數據庫圖片的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.   
    28.            } catch (SQLException e) {   
    29.                  // TODO Auto-generated catch block   
    30.                  e.printStackTrace();   
    31.            } catch (FileNotFoundException e) {   
    32.                  // TODO Auto-generated catch block   
    33.                  e.printStackTrace();   
    34.            } catch (IOException e) {   
    35.                  // TODO Auto-generated catch block   
    36.                  e.printStackTrace();   
    37.            } finally {   
    38.                  try {   
    39.                        inputStream.close();   
    40.                        outputStream.flush();   
    41.                        outputStream.close();   
    42.                        rs.close();   
    43.                        st.close();   
    44.                        conn.commit();   
    45.                        conn.close();   
    46.                  } catch (IOException e) {   
    47.                        // TODO Auto-generated catch block   
    48.                        e.printStackTrace();   
    49.                  } catch (SQLException e) {   
    50.                        // TODO Auto-generated catch block   
    51.                        e.printStackTrace();   
    52.                  }   
    53.   
    54.            }   
    55.      }  



    操作完畢!
    posted on 2010-02-05 11:26 super_nini 閱讀(1459) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2010年2月>
    31123456
    78910111213
    14151617181920
    21222324252627
    28123456
    78910111213

    常用鏈接

    留言簿

    隨筆檔案

    文章檔案

    相冊

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 老司机69精品成免费视频| 中国毛片免费观看| 免费阿v网站在线观看g| 亚洲成年轻人电影网站www| 三上悠亚在线观看免费| 亚洲精品乱码久久久久久按摩 | 亚洲丝袜美腿视频| 国产成人无码区免费内射一片色欲| 亚洲一区二区高清| sihu国产精品永久免费| 伊伊人成亚洲综合人网7777| 西西人体免费视频| 久久91亚洲精品中文字幕| 最近中文字幕完整免费视频ww | 久九九精品免费视频| 亚洲 暴爽 AV人人爽日日碰| 在线观看人成网站深夜免费| 曰批免费视频播放在线看片二| 亚洲国产精品成人久久蜜臀| 久久久精品国产亚洲成人满18免费网站| 亚洲啪啪AV无码片| 777爽死你无码免费看一二区| 亚洲一级片在线观看| 日本一区免费电影| 国产99久久久国产精免费| 亚洲欧洲日产国产综合网| 国产免费不卡v片在线观看| 国产精品亚洲五月天高清| 亚洲国产精品一区二区第一页| 久久国产免费观看精品3| 亚洲一本到无码av中文字幕| 亚洲性日韩精品国产一区二区| 日韩免费人妻AV无码专区蜜桃| 亚洲一日韩欧美中文字幕在线| 亚洲日韩人妻第一页| 亚洲电影免费观看| 欧洲精品码一区二区三区免费看| 久久亚洲精品无码| 日韩人妻无码免费视频一区二区三区 | 中文字幕在线成人免费看| 亚洲国产综合自在线另类|