VB程序中數(shù)據(jù)庫(kù)的圖片處理的處理方法
發(fā)表時(shí)間:2024-02-17 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在數(shù)據(jù)庫(kù)中,我們經(jīng)常遇到需要處理圖片的情況。例如,如 果我們?cè)诋a(chǎn)品數(shù)據(jù)庫(kù)中存儲(chǔ)了產(chǎn)品的照片,那將給顧客以直接的 感官認(rèn)識(shí)。 在數(shù)據(jù)庫(kù)中,圖片的特殊性有兩點(diǎn):1、圖片所占存儲(chǔ)空間常 常是比較大的;2、圖片的處理常常需要外部的程序。 在標(biāo)準(zhǔn)SQL語(yǔ)言中,提供了BLOB和CLO...
在數(shù)據(jù)庫(kù)中,我們經(jīng)常遇到需要處理圖片的情況。例如,如
果我們?cè)诋a(chǎn)品數(shù)據(jù)庫(kù)中存儲(chǔ)了產(chǎn)品的照片,那將給顧客以直接的
感官認(rèn)識(shí)。
在數(shù)據(jù)庫(kù)中,圖片的特殊性有兩點(diǎn):1、圖片所占存儲(chǔ)空間常
常是比較大的;2、圖片的處理常常需要外部的程序。
在標(biāo)準(zhǔn)SQL語(yǔ)言中,提供了BLOB和CLOB數(shù)據(jù)類型來存儲(chǔ)巨大的
二進(jìn)制或字符數(shù)據(jù)。Microsoft SQL Server中的text數(shù)據(jù)類型相
當(dāng)于BLOB,而image數(shù)據(jù)類型相當(dāng)于CLOB。
小型數(shù)據(jù)庫(kù)我們常用ACCESS。在ACCESS中,備注數(shù)據(jù)類型可
以存儲(chǔ)最多為 65,535 個(gè)字符,而OLE對(duì)象數(shù)據(jù)類型可以存儲(chǔ)最多
1 G 字節(jié)的鏈接或嵌入的對(duì)象(例如 Microsoft Excel 電子表格
、Microsoft Word 文檔、圖形、聲音或其他二進(jìn)制數(shù)據(jù))。
因?yàn)閳D片的大小常超出備注數(shù)據(jù)類型的限制,且用OLE類型更
方便,下面敘述一種在VB程序中處理ACCESS數(shù)據(jù)庫(kù)中圖片處理的
辦法。
在該方法中,我們要利用ACCESS數(shù)據(jù)庫(kù)中的OLE數(shù)據(jù)類型存儲(chǔ)
圖片,在VB程序中用OLE控件處理圖片。
由于OLE對(duì)象不能支持ADO和OLEDB,我們要用DAO來連接數(shù)據(jù)
。
首先,在ACCESS數(shù)據(jù)庫(kù)的表中,增加一個(gè)OLE對(duì)象數(shù)據(jù)類型的
列,用來存儲(chǔ)圖片。
其次,在VB程序中,添加一個(gè)Data控件,設(shè)置必要的屬性,
建立數(shù)據(jù)庫(kù)連接。當(dāng)然,可以用代碼實(shí)現(xiàn),只是比較麻煩,有挑
戰(zhàn)性,但更靈活。
在VB程序中添加一個(gè)OLE控件,出現(xiàn)插入對(duì)象對(duì)話框,選擇新
建畫筆圖片或圖像文檔、位圖圖像等等反正能處理圖像的OLE類型
。在此,我們選擇新建畫筆圖片。
設(shè)置OLE控件的DataSource屬性為Data控件,DataField屬性
為數(shù)據(jù)庫(kù)表的OLE類型列的名字。
就這么簡(jiǎn)單,我們可以試著運(yùn)行它。
我們可以右鍵單擊運(yùn)行中的VB程序的OLE控件,出現(xiàn)編輯和打
開快捷菜單。選擇編輯將會(huì)在窗口中嵌入畫圖程序的菜單;選擇
打開將調(diào)用畫圖程序來打開圖片。這樣,我們就可以很方便地編
輯圖片了。我們可以雙擊OLE控件,這樣相當(dāng)于選擇編輯快捷菜單
。
以上方法我在VB6+ACCESS 2000中測(cè)試通過。其實(shí),只要我們
理解Windows的OLE技術(shù),以上方法是很容易理解的。
那么,如果在不支持OLE類型的大型數(shù)據(jù)庫(kù)中,如Oracle、
Microsoft SQL Server中,如何來處理圖片呢。
在大型數(shù)據(jù)庫(kù)中,我們可以用BLOB或CLOB類型來存儲(chǔ)圖片。
因?yàn)閳D片數(shù)據(jù)是二進(jìn)制的,用BLOB類型更好。
我們把圖片文件的內(nèi)容整個(gè)當(dāng)作一個(gè)BLOB字段,讀入數(shù)據(jù)庫(kù)
中。
我們要在客戶程序中處理圖片時(shí),將數(shù)據(jù)庫(kù)中的BLOB字段讀
出,寫入到一個(gè)臨時(shí)文件中,再調(diào)用外部程序打開該臨時(shí)文件,
處理完后更新數(shù)據(jù)庫(kù),最后刪除臨時(shí)文件。
由于數(shù)據(jù)庫(kù)不支持象Real Movie的流式傳輸,我想,一個(gè)臨
時(shí)文件是免不了的。如果你能力強(qiáng),可以尋求在內(nèi)存中處理。
以上是我對(duì)數(shù)據(jù)庫(kù)中的圖片處理的一些看法,希望能對(duì)有需
要的網(wǎng)友有些幫助。