国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Oracle數(shù)據(jù)庫中BLOB字段的存取問題

數(shù)據(jù)庫 Oracle
我們今天主要介紹的是Oracle數(shù)據(jù)庫中BLOB字段的存取問題。以下就是文章的詳細(xì)內(nèi)容介紹,希望會給你帶來一些幫助在此方面。

以下的文章主要是對Oracle數(shù)據(jù)庫中BLOB字段的存取問題的介紹,我在經(jīng)常會碰到Oracle數(shù)據(jù)庫中BLOB字段的存取這一問題,需求是將一個文件或者文件流存儲到Oracle數(shù)據(jù)庫里,Oracle8提供了Blob和Clob用來存儲二進(jìn)制大對象數(shù)據(jù)。

可是它和Java.sql.里面的Blob不兼容,經(jīng)常導(dǎo)致Blob字段無法鎖定或者操作失敗,總之我總結(jié)了一些經(jīng)驗大家共享。

首先建立測試數(shù)據(jù)表

 

  1. drop table filelist;  
  2. commit;  
  3. CREATE TABLE SYSTEM.FILELIST (  
  4. "FILENAME" VARCHAR2(50) NOT NULL,  
  5. "FILESIZE" NUMBER(20) NULL,  
  6. "FILEBODY" BLOB NULL,  
  7. PRIMARY KEY("FILENAME"), UNIQUE("FILENAME")) ;  
  8. commit;  

 

測試過程,首先將硬盤文件讀入Oracle數(shù)據(jù)庫,然后再讀出到硬盤的另一個新文件里,原碼如下:

 

  1. import java.io.*;  
  2. import java.util.*;  
  3. import java.sql.*;  
  4. import oracle.sql.*;  
  5. import oracle.jdbc.driver.*;  
  6. import java.text.*;  
  7. public class test  
  8. {  
  9. public static void main(String args[]) throws java.io.IOException,java.sql.SQLException  
  10. {  
  11. dbBean db1=new dbBean();  
  12. /**  

 

*這里是我的數(shù)據(jù)聯(lián)接Bean

*大家可以用自己的連接Bean

 

  1. */  
  2. byte a[]=null;  

 

**將測試文件test.doc讀入此字節(jié)數(shù)組

 

  1. java.io.FileInputStream fin=null;  
  2. java.io.FileOutputStream fout=null;  
  3. oracle.jdbc.OracleResultSet ors=null;  

 

**這里rs一定要用Oracle數(shù)據(jù)庫提供的

 

  1. oracle.jdbc.driver.OraclePreparedStatement opst=null

**PreparedStatement用

Oracle提供的

 

  1. try  
  2. {  
  3. java.io.File f1=new java.io.File("c:/temp/test.doc");  
  4. java.io.File f2=new java.io.File("c:/temp/testout.doc");  

**從BLOB讀出的信息寫

//入該文件,和源文件對比測試用

 

  1. fin=new java.io.FileInputStream(f1);  
  2. fout=new java.io.FileOutputStream(f2);  

 

int flength=(int)f1.length();//**讀入文件的字節(jié)長度

 

  1. System.out.println("file length::"+flength);  
  2. a=new byte[flength];  
  3. int i=0;int itotal=0;  

 

/**將文件讀入字節(jié)數(shù)組

 

  1. for (;itotal<flength;iitotal=i+itotal )  
  2. {  
  3. i=fin.read(a,itotal,flength-itotal);  
  4. }  
  5. fin.close();  
  6. System.out.println("read itotal::"+itotal);  

 

/**注意Oracle數(shù)據(jù)庫的 BLOB一定要用EMPTY_BLOB()初始化

 

  1. String mysql="insert into filelist (FileName,FileSize,FileBody) values (?,?,EMPTY_BLOB())";  
  2. opst=(oracle.jdbc.driver.OraclePreparedStatement)db1.conn.prepareStatement(mysql);  
  3. opst.setString(1,"wordtemplate");  
  4. opst.setInt (2,flength);  
  5. opst.executeUpdate();  
  6. opst.clearParameters();  

 

/**插入其它數(shù)據(jù)后,定位BLOB字段

 

  1. mysql="select filebody from filelist where filename=?";  
  2. opst=(oracle.jdbc.driver.OraclePreparedStatement)db1.conn.prepareStatement(mysql);  
  3. opst.setString(1,"wordtemplate");  
  4. ors=(oracle.jdbc.OracleResultSet)opst.executeQuery();  
  5. if (ors.next())  
  6. {  

 

oracle.sql.BLOB blob=ors.getBLOB(1);/**得到BLOB字段

int j=blob.putBytes(1,a);/**將字節(jié)數(shù)組寫入BLOB字段

 

  1. System.out.println("j:"+j);  
  2. db1.conn.commit();  
  3. ors.close();  
  4. }  
  5. System.out.println("insert into ok");  

 

byte b[]=null;/**保存從BLOB讀出的字節(jié)

 

  1. opst.clearParameters();  
  2. mysql="select filebody from filelist where filename=?";  
  3. opst=(oracle.jdbc.driver.OraclePreparedStatement)db1.conn.prepareStatement(mysql);  
  4. opst.setString(1,"wordtemplate");  
  5. ors=(oracle.jdbc.OracleResultSet)opst.executeQuery();  
  6. if (ors.next())  
  7. {  
  8. oracle.sql.BLOB blob2=ors.getBLOB(1);  
  9. System.out.println("blob2 length:"+blob2.length());  

 

b=blob2.getBytes(1,flength);/**從BLOB取出字節(jié)流數(shù)據(jù)

 

  1. System.out.println("b length::"+b.length);  
  2. db1.conn.commit();  
  3. }  
  4. ors.close();  

 

/**將從BLOB讀出的字節(jié)寫入文件

 

  1. fout.write(b,0,b.length);  
  2. fout.close();  
  3. System.out.println("write itotal::"+b.length);  
  4. }  
  5. catch(Exception e)  
  6. {  
  7. System.out.println("errror :"+e.toString() );  
  8. e.printStackTrace();  
  9. }  
  10. finally  

 

{ /**關(guān)閉所有數(shù)據(jù)聯(lián)接

 

  1. stmt.close();  
  2. db1.closeConn();  
  3. }  
  4. }  
  5. }  

 

編譯運行在TomCat下調(diào)試通過。

需要注意的是Blob存取的過程,一般先存入和BLOB相關(guān)的控制數(shù)據(jù),如文件的名字,然后查詢定位BLOB字段,利用Oracle數(shù)據(jù)庫Blob提供的方法:

 

  1. public int putBytes(long pos,byte bytes[])  
  2. public byte[] getBytes(long pos,byte bytes[])  

 

或者利用

 

  1. public OutputStream getBinaryOutputStream() throws SQLException  
  2. public InputStream getBinaryStream() throws SQLException  

 

因為利用輸入輸出流總歸還是利用到字節(jié)數(shù)組緩沖流,所以就不舉例子了。

【編輯推薦】

  1. Oracle 函數(shù)用法之decode解剖
  2. LTO歸檔解決方案容量、性能和功能介紹
  3. Oracle 函數(shù)用法之decode解剖
  4. Oracle字符集討論的經(jīng)典版
  5. Oracle表空間的設(shè)置問題的描述

 

責(zé)任編輯:佚名 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-04-23 14:32:01

Oracle數(shù)據(jù)庫

2010-04-20 10:12:42

OraclePL

2011-04-11 13:09:56

數(shù)據(jù)庫

2011-07-19 14:48:36

處理blob字段

2011-03-18 11:24:07

Oracle 數(shù)據(jù)庫時間問題

2011-05-26 14:18:49

Oracle數(shù)據(jù)庫字段屬性

2011-08-18 18:34:00

Oracle數(shù)據(jù)庫創(chuàng)建自增字段

2010-04-14 15:58:17

Oracle程序開發(fā)

2010-04-23 16:18:36

Oracle存取

2010-05-07 17:56:10

Oracle數(shù)據(jù)庫安全

2023-11-16 17:12:33

數(shù)據(jù)庫oracle

2010-04-15 10:51:52

2009-09-04 09:54:59

數(shù)據(jù)庫名

2009-07-02 00:00:00

OOPOracle

2019-08-28 07:11:00

Oracle數(shù)據(jù)庫LOB

2010-10-26 08:54:52

BLOBOracle

2011-05-26 13:36:40

Oracle數(shù)據(jù)庫時間處理

2010-10-27 17:11:35

oracle查詢

2023-11-13 15:03:49

MySQL數(shù)據(jù)庫

2009-07-31 17:01:21

C#存取Access數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號

欧美精品偷拍| 啦啦啦啦免费高清视频在线观看1| 在线观看污视频| 精品一区91| 欧美日韩黄色一区二区| 国产又猛又黄的视频| 久久亚洲电影| 日本a级片免费| 亚洲另类图片色| 国产裸舞福利在线视频合集| 五月天激情综合| 激情婷婷丁香| 亚洲视频在线免费看| 日韩电影免费观看| 日韩一区二区三区四区| 久久精品国产亚洲a∨麻豆| 亚洲综合色丁香婷婷六月图片| 国产一伦一伦一伦| 国产精品午夜免费| 亚洲第一狼人区| 国产精品久久久一本精品| 免费日韩视频在线观看| 国产午夜精品在线观看| 亚欧激情乱码久久久久久久久| 欧美激情综合在线| 毛葺葺老太做受视频| 国产亚洲欧美日韩在线一区| 久久精品午夜福利| 中文字幕一区二区三区乱码在线| 成人午夜激情| 精品欧美aⅴ在线网站| 黄色片在线免费观看| 欧美在线观看一二区| 性xxxfreexxxx性欧美| 亚洲国产日韩欧美在线动漫| 欧美大片高清| 欧美国产日本在线| 九一精品国产| 动漫3d精品一区二区三区 | 国产日韩欧美综合精品| 国产亚洲午夜| 国产1区2区3区中文字幕| 国产视频一区二区在线观看| 日本免费看黄色| 欧美日韩国产在线播放网站| 久久久久久久| 欧美最猛性xxxxx(亚洲精品)| 欧美日韩视频一区二区三区| 91制片厂免费观看| 亚洲日本在线看| 麻豆影院在线观看| www日韩中文字幕在线看| 精品久久国产| 制服诱惑一区| 亚洲精品成人少妇| 在线观看免费视频你懂的| 欧美成人免费va影院高清| 91精品国偷自产在线电影| www.-级毛片线天内射视视| 国产精品毛片高清在线完整版| 在线看三级网站视频| 精品嫩草影院久久| 亚洲欧美成人vr| 亚洲无玛一区| 亚洲欧洲美洲综合色网| 成人欧美在线| 97婷婷涩涩精品一区| 亚洲电影av| 妺妺窝人体色www在线观看| 欧美色国产精品| 欧美日本三级| 日韩视频专区| 一区二区三区久久| 亚洲成人人体| julia一区二区中文久久94| 91丨porny丨在线| 中文字幕日本在线| 国产91精品黑色丝袜高跟鞋| 蜜臀精品久久久久久蜜臀 | 午夜伦全在线观看| 欧美刺激性大交免费视频| 亚洲天堂成人| 九热视频在线观看| 亚洲国产精品成人精品| 色偷偷综合网| 亚洲色欲综合一区二区三区| 6080亚洲精品一区二区| 网曝91综合精品门事件在线| 伊人久久大香线蕉av一区| 亚洲一区二区三区免费视频| 国产精品第七影院| 成人h版在线观看| 视频二区在线| 久久露脸国产精品| 韩国av一区二区| 在线观看免费黄视频| 日本欧美精品在线| 91网站在线播放| 国产调教在线| 国产伦精品一区二区三区免| 国产欧美日韩综合| 国产精品粉嫩| 欧美精品一区在线| 91官网在线免费观看| 精品一区三区| 久久久久久久久久久久91| 亚洲人成网站色ww在线| 国产日韩精品视频一区二区三区 | 精品视频在线一区二区| 国产suv精品一区二区三区88区| 成人精品视频一区二区三区| 91香蕉在线观看| 亚洲一区二区日本| 亚洲精品乱码久久久久久| 蜜桃精品视频| 久久久免费视频网站| 伊人久久免费视频| 国产伦精品一区二区三区视频青涩 | 亚洲欧美视频在线| 视频在线观看一区二区三区| 首播影院在线观看免费观看电视| 久久久亚洲国产天美传媒修理工| 99久久精品免费| 国产一区二区主播在线| 黄黄视频在线观看| 亚洲精品美女在线观看播放| 美女在线观看视频一区二区| 精品精品导航| 亚洲精品一区二区三区av| 欧美男生操女生| 好看不卡的中文字幕| 在线播放中文字幕| 91精品在线观看视频| 欧美日韩一区免费| 黄色av日韩| h网站久久久| 伊人久久大香线蕉av一区| 亚洲精品大尺度| 国产高清成人在线| 日韩护士脚交太爽了| 国产 日韩 亚洲 欧美| 久久久www成人免费精品| 99国产精品一区| 国产精品日本一区二区不卡视频| 久久久久久人妻一区二区三区| 欧美色图国产精品| 亚洲欧洲闷骚av少妇影院| 国产91视觉| 精品成人私密视频| 国产91丝袜在线18| 久久中文资源| 色播色播色播色播色播在线 | 97精品中文字幕| caoporn国产精品免费视频 | 国产欧美成人| 成人国产电影在线观看| 黄色www网站| 性欧美xxxx交| 福利精品视频在线| 首页综合国产亚洲丝袜| 免费污视频在线一区| 亚洲黄色a v| 国产精品久久久久久中文字| 欧美图区在线视频| 国产一区二区视频在线| 大奶一区二区三区| 国产视频三级在线观看播放| 婷婷四月色综合| 欧美日韩福利电影| 亚洲超碰精品一区二区| 免播放器亚洲| 欧美综合社区国产| 日本免费视频www| 蜜桃av噜噜一区二区三| 中文字幕在线国产精品| 亚洲午夜视频在线观看| 日韩精品免费专区| 国产精品一区二区中文字幕| 欧美xxx.com| 和岳每晚弄的高潮嗷嗷叫视频| 97激碰免费视频| 欧美一区二区久久| 国产精品欧美久久久久无广告 | 日韩福利一区二区| 一卡二卡3卡四卡高清精品视频| 久久精品国产视频| 日韩欧美中文在线| 顶级嫩模精品视频在线看| 欧美freesextv| 成人在线高清| 岛国最新视频免费在线观看| 国产特级淫片高清视频| 成人性教育视频在线观看| 自拍偷拍亚洲一区| 欧美日韩一区二区三区免费看| 91美女片黄在线观看91美女| 亚洲成人在线| 蜜桃精品wwwmitaows| 日韩电影免费观| 91社区在线高清|