使用JDBC4.0處理Oracle中BLOB類型的數據

来源:http://www.cnblogs.com/excalimax/archive/2016/08/24/5804543.html
-Advertisement-
Play Games

需要的jar包 使用ojdbc6.jar 在/META-INF/MANIFEST.MF里可以看到Specification-Version: 4.0 建表 將文件寫入資料庫 將文件從資料庫中讀出 ...


需要的jar包

 

使用ojdbc6.jar 
在/META-INF/MANIFEST.MF里可以看到Specification-Version: 4.0

 

建表

 

create sequence seq_blobmodel_id start with 1 increment by 1 nocache;
create table blobmodel
(
     blobid number(10) primary key not null,
     image blob
);

 

 

將文件寫入資料庫

 1 /**
 2      * 將圖片文件存入資料庫
 3      * @throws SQLException
 4      * @throws IOException
 5      */
 6     public int writeBlob(String path) throws SQLException, IOException{
 7         int result = 0;
 8         String sql = "insert into blobmodel(blobid,image) values(seq_blobmodel_id.nextval,?)";
 9         //1.創建Blob
10         Blob image = DBHelper.getConnection().createBlob();
11         //2.將流放入blob
12         OutputStream out = image.setBinaryStream(1);
13         //3.讀取圖片,並寫入輸出流
14         FileInputStream fis = new FileInputStream(path);
15         byte []buf = new byte[1024];
16         int len = 0;
17         while((len=fis.read(buf))!=-1){
18             out.write(buf, 0, len);
19         }
20         result = DBHelper.executeUpdate2(sql, new Object[]{image});//自己簡單封裝了jdbc操作
21 
22         fis.close();
23         out.close();
24         return result;
25     }

 

 

將文件從資料庫中讀出

 

/**
     * 將資料庫中的圖片文件讀出來
     * @throws SQLException 
     * @throws IOException 
     */
    public void readBlob() throws SQLException, IOException{
        String sql = "select image from blobmodel where blobid=?";
        DBHelper.getConnection();//
        ResultSet rs = DBHelper.executeQuery(sql, new Object[]{1});
        while(rs.next()){
            Blob image = rs.getBlob(1);
            InputStream is = image.getBinaryStream();
            BufferedInputStream bis = new BufferedInputStream(is);

            String path = "img/"+new Date().getTime()+".jpg";//指定輸出的目錄為項目下的img文件夾

            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(path));
            byte []buf = new byte[1024];
            int len = 0;
            while((len=bis.read(buf))!=-1){
                bos.write(buf,0,len);
            }

            bos.close();
            bis.close();
        }
    }

 



 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 表大小 慢的sql select a.city, a.agent_id, a.username, a.real_name, phone, zgy_name, login_count, user_count, count(distinct b.invest_id) user_invested, sum ...
  • 項目裡面需要對mongodb的性能進行測試,看了下網上很多做法都是使用YCSB進行測試,因此開始學習使用YCSB。 參考資料: 1 安裝 基於參考文檔(https://github.com/brianfrankcooper/YCSB/tree/master/mongodb )安裝java,mvn,y ...
  • 久等了,近期公司比較忙,學習的時間都沒有啊,到今日才有時間呢!!!好了,下麵就跟著筆者開始配置Hadoop集群吧。 hosts文件和SSH免密碼登錄配置好了之後,現在進入Hadoop安裝目錄,修改一些配置文件,修改配置還是相對簡單的,一下是需要修改的文件內容(當然這裡只是學習時的配置,更加深入的配置 ...
  • 轉自:http://chuansong.me/n/443660447865 PDB 的創建和訪問 在使用 dbca 建庫時,創建資料庫之前,可以保存一下創建腳本,分析其具體執行過程。以自定義方式創建名稱為julia的資料庫為例,其主要腳本 julia.sql 中包含如下腳本調用: 在第一個腳本 Cr ...
  • 資料庫集群 集群的存在意義是為了保證高可用、數據安全、擴展性以及負載均衡。 什麼是集群? 由二台或更多物理上獨立的伺服器共同組成的"虛擬"伺服器稱之為集群伺服器。一項稱做MicroSoft集群服務(MSCS)的微軟服務可對集群伺服器進 行管理。一個SQL Server集群是由二台或更多運行SQL S ...
  • DAC(Dedicated Admin Connection)是SQL Server 2005引入的一個東西,目的是在SQL Server發生嚴重性能問題的時候仍保留有限的資源保證管理員能夠執行一些簡單的命令用於問題診斷、釋放資源、殺死肇事進程等。微軟官方對DAC的說明:使用專用管理員連接。對於DA ...
  • select tpc.cspcode as id , tpc.cspcode||'('||tc.cname||'--'|| DECODE(tsp.cpagedesc,'LENGTH(tsp.cpagedesc)>30','...',tsp.cpagedesc)||')' as text from t ...
  • 隨著社會經濟的發展,特別是互聯網的發展,企業的數據呈現幾何級的增長,大數據在過去的幾年裡一直是一個非常非常火的概念,並且一直在持續。但與此同時,企業對於數據的理解和應用卻大相徑庭。有一部分企業通過數據分析和挖掘能夠降低企業成本,提升業績,但也有一些企業對於數據的分析和應用停留在較淺層次。所以,數據分... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...