小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

[原創(chuàng)]Oracle數(shù)據(jù)庫(kù)中保存圖片等非結(jié)構(gòu)化數(shù)據(jù)(.net)

 orion360doc 2011-06-26

[原創(chuàng)]Oracle數(shù)據(jù)庫(kù)中保存圖片等非結(jié)構(gòu)化數(shù)據(jù)(.net)

分享
標(biāo)簽: .Net  圖片  Oracle  數(shù)據(jù)庫(kù)  保存  分類: 編程技術(shù) 2007-05-14 16:09

    最近需要用Oracle數(shù)據(jù)庫(kù)保存圖片,于是進(jìn)行了一下研究。其實(shí)不管是文檔、圖片、還是視頻,這些都屬于非結(jié)構(gòu)化數(shù)據(jù),保存的關(guān)鍵在轉(zhuǎn)換類型,下面進(jìn)行總結(jié)。

    1.在數(shù)據(jù)庫(kù)表中建立一個(gè)LOB類型的字段,這種類型是專門用來(lái)保存圖片等非結(jié)構(gòu)化數(shù)據(jù)的,Oracle和SQL Server等大型數(shù)據(jù)庫(kù)都支持這樣的類型。
    具體類型可能會(huì)有若干種,Oralcle支持BLOB、CLOB、NCLOB、BFILE,BLOB是二進(jìn)制型大對(duì)象,CLOB和NCLOB都是字符型大對(duì)象,BFILE只存儲(chǔ)文件指針,實(shí)際的文件是存儲(chǔ)在文件系統(tǒng)中的。一般采用BLOB,它支持最大4G的數(shù)據(jù)。

    2.在程序中將圖片轉(zhuǎn)化成字節(jié)數(shù)組。例如:
    MemoryStream mstream = new MemoryStream();
    image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);
    byte[] imageData = mstream.ToArray(); 

    3.用SQL語(yǔ)句進(jìn)行操作,方法和普通字段類似,只是在要指定字段內(nèi)容的時(shí)候采用參數(shù),將字節(jié)數(shù)組通過(guò)參數(shù)傳入。例如:
    CREATE TABLE table(ID NUMBER(3), PHOTO BLOB)
    INSERT INTO table(ID,PHOTO) VALUES('1', :Photo)
    :PHOTO是參數(shù),注意這是在Oracle中的寫(xiě)法,在SQL Server中應(yīng)該是@PHOTO。

    4.取出圖像的時(shí)候只要將object強(qiáng)制轉(zhuǎn)化為字節(jié)數(shù)組,再轉(zhuǎn)化為圖像即可。例如:
    MemoryStream mstream = new MemoryStream((byte[])imageData);
    Image image=Image.FromStream(mstream);

    其實(shí)對(duì)BLOB的操作也可以利用.Net的相關(guān)類庫(kù),不過(guò)我沒(méi)用過(guò),在此不表。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多