<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 閱讀(1458) 評論(0)  編輯  收藏

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


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

    常用鏈接

    留言簿

    隨筆檔案

    文章檔案

    相冊

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 羞羞网站在线免费观看| 美女露100%胸无遮挡免费观看| 日韩欧美亚洲中文乱码| 男男黄GAY片免费网站WWW | 亚洲精品无码不卡在线播放| 一本色道久久综合亚洲精品蜜桃冫 | 亚洲人成无码www久久久| 亚洲国产成人高清在线观看 | 亚洲一区二区三区高清在线观看| 日日麻批免费40分钟日本的| 18禁止观看免费私人影院| 亚洲成a人片毛片在线| 黄色大片免费网站| 亚洲一区二区三区在线播放| 91视频免费网站| 成熟女人牲交片免费观看视频| 亚洲成人一区二区| 亚洲国产精品综合久久网各| 久久久久久免费视频| 久久夜色精品国产亚洲av| 亚洲色精品VR一区区三区| 天堂在线免费观看| 亚洲av最新在线网址| 国产亚洲成在线播放va| 亚洲午夜无码AV毛片久久| 在线观看特色大片免费网站| 免费a级毛片网站| 亚洲三级在线播放| 成人无码WWW免费视频| 亚洲日韩图片专区第1页| 在线涩涩免费观看国产精品 | 亚洲一级特黄无码片| 99爱免费观看视频在线| 亚洲欧洲日产国码一级毛片| 亚洲第一第二第三第四第五第六| 思思re热免费精品视频66| 亚洲AV无码一区二区三区网址| 国产亚洲一区二区三区在线不卡 | 亚洲图片激情小说| 亚洲伊人久久综合影院| 57pao国产成视频免费播放|