人們?cè)絹碓綗嶂杂谠跀?shù)據(jù)庫中存儲(chǔ)圖像文件。例如銷售產(chǎn)品的說明圖片、工程設(shè)計(jì)圖紙、公安部門存儲(chǔ)身份證照片和指紋圖像、圖書館數(shù)據(jù)庫里的動(dòng)植物標(biāo)本照片、商品圖片等等,類似的例子舉不勝舉。其中有很多存儲(chǔ)在數(shù)據(jù)庫里的圖像是可以通過瀏覽器訪問,提供給很多人使用的。
想要將圖片存儲(chǔ)在數(shù)據(jù)庫里有好幾種方法。本文將為大家講述如何在Access里存儲(chǔ)圖像,不過您也可以稍加變通擴(kuò)展到其他不同的數(shù)據(jù)庫引擎。
數(shù)據(jù)庫里的圖像
正如文本存儲(chǔ)在文本框、日期存儲(chǔ)在日期欄一樣,圖像也需要特定文件類型來存儲(chǔ)。在SQL Server中,雖然被稱為“圖像”文件,不過在其他的數(shù)據(jù)庫引擎中,可能有不同的名字,包括那個(gè)聽起來很神氣的二進(jìn)制大型對(duì)象(BLOB)數(shù)據(jù)類型。在Access中,圖像文件以O(shè)LE類型字段進(jìn)行存儲(chǔ)。這里為對(duì)細(xì)節(jié)感興趣的人總結(jié)了用OLE類型存儲(chǔ)圖像文件的利弊。
以O(shè)LE對(duì)象來存儲(chǔ)圖像會(huì)遇到一個(gè)問題,那就是Access數(shù)據(jù)庫膨脹的速度急劇加快,從而使運(yùn)行速度減慢。特別是當(dāng)您存儲(chǔ)GIF和JPEG格式文件時(shí)尤為明顯,因?yàn)镺LE會(huì)為每一個(gè)圖像文件另外創(chuàng)建一個(gè)包含顯示信息的位圖文件;也就是說,如果您添加一個(gè)1MB的圖像文件,那么實(shí)際占用的數(shù)據(jù)庫空間要比1MB大多了。這些附加文件比原始文件的容量更大,從而使您的數(shù)據(jù)庫變得臃腫不堪。牢記一點(diǎn),Access數(shù)據(jù)庫的存儲(chǔ)空間只有2GB。如果要存儲(chǔ)大量圖像,很快就會(huì)達(dá)到這一存儲(chǔ)極限,失去可用空間。不過,除了要小心數(shù)據(jù)庫的膨脹之外,這確實(shí)是一個(gè)用于存儲(chǔ)少量圖像的簡(jiǎn)便之法。而且,如果您要移動(dòng)數(shù)據(jù)庫,這些存儲(chǔ)在內(nèi)的圖像也會(huì)隨之移動(dòng),不過在下面要講到的方法中可能就不是這樣了。
指向圖像
我們還是使用OLE對(duì)象數(shù)據(jù)類型,不過在選擇圖像時(shí)使用“鏈接”選項(xiàng)(見后續(xù)實(shí)際步驟)。圖像并非復(fù)制到數(shù)據(jù)庫里,只是向數(shù)據(jù)庫插入一個(gè)鏈接,鏈接到該圖像。
這樣做也是有利有弊。有利的方面顯而易見,是數(shù)據(jù)庫膨脹問題得到了緩解。如果您對(duì)其中存儲(chǔ)在磁盤上的某個(gè)圖像文件進(jìn)行編輯,當(dāng)您從數(shù)據(jù)庫內(nèi)部查看該圖像時(shí),就能看到修改的痕跡。這種特性是好是壞取決于您想要實(shí)現(xiàn)的功能。
不過,如果您想把Access文件轉(zhuǎn)移到另外一臺(tái)計(jì)算機(jī),這些圖像就無法跟著一起轉(zhuǎn)移了。而且要更新兩者之間的鏈接可能很困難,因?yàn)楸仨毚娣旁贏ccess某處的指向圖像的指針(如C:\MyPics\Travels\lake.jpg)無法隨時(shí)用于編輯。
想要將圖片存儲(chǔ)在數(shù)據(jù)庫里有好幾種方法。本文將為大家講述如何在Access里存儲(chǔ)圖像,不過您也可以稍加變通擴(kuò)展到其他不同的數(shù)據(jù)庫引擎。
數(shù)據(jù)庫里的圖像
正如文本存儲(chǔ)在文本框、日期存儲(chǔ)在日期欄一樣,圖像也需要特定文件類型來存儲(chǔ)。在SQL Server中,雖然被稱為“圖像”文件,不過在其他的數(shù)據(jù)庫引擎中,可能有不同的名字,包括那個(gè)聽起來很神氣的二進(jìn)制大型對(duì)象(BLOB)數(shù)據(jù)類型。在Access中,圖像文件以O(shè)LE類型字段進(jìn)行存儲(chǔ)。這里為對(duì)細(xì)節(jié)感興趣的人總結(jié)了用OLE類型存儲(chǔ)圖像文件的利弊。
以O(shè)LE對(duì)象來存儲(chǔ)圖像會(huì)遇到一個(gè)問題,那就是Access數(shù)據(jù)庫膨脹的速度急劇加快,從而使運(yùn)行速度減慢。特別是當(dāng)您存儲(chǔ)GIF和JPEG格式文件時(shí)尤為明顯,因?yàn)镺LE會(huì)為每一個(gè)圖像文件另外創(chuàng)建一個(gè)包含顯示信息的位圖文件;也就是說,如果您添加一個(gè)1MB的圖像文件,那么實(shí)際占用的數(shù)據(jù)庫空間要比1MB大多了。這些附加文件比原始文件的容量更大,從而使您的數(shù)據(jù)庫變得臃腫不堪。牢記一點(diǎn),Access數(shù)據(jù)庫的存儲(chǔ)空間只有2GB。如果要存儲(chǔ)大量圖像,很快就會(huì)達(dá)到這一存儲(chǔ)極限,失去可用空間。不過,除了要小心數(shù)據(jù)庫的膨脹之外,這確實(shí)是一個(gè)用于存儲(chǔ)少量圖像的簡(jiǎn)便之法。而且,如果您要移動(dòng)數(shù)據(jù)庫,這些存儲(chǔ)在內(nèi)的圖像也會(huì)隨之移動(dòng),不過在下面要講到的方法中可能就不是這樣了。
指向圖像
我們還是使用OLE對(duì)象數(shù)據(jù)類型,不過在選擇圖像時(shí)使用“鏈接”選項(xiàng)(見后續(xù)實(shí)際步驟)。圖像并非復(fù)制到數(shù)據(jù)庫里,只是向數(shù)據(jù)庫插入一個(gè)鏈接,鏈接到該圖像。
這樣做也是有利有弊。有利的方面顯而易見,是數(shù)據(jù)庫膨脹問題得到了緩解。如果您對(duì)其中存儲(chǔ)在磁盤上的某個(gè)圖像文件進(jìn)行編輯,當(dāng)您從數(shù)據(jù)庫內(nèi)部查看該圖像時(shí),就能看到修改的痕跡。這種特性是好是壞取決于您想要實(shí)現(xiàn)的功能。
不過,如果您想把Access文件轉(zhuǎn)移到另外一臺(tái)計(jì)算機(jī),這些圖像就無法跟著一起轉(zhuǎn)移了。而且要更新兩者之間的鏈接可能很困難,因?yàn)楸仨毚娣旁贏ccess某處的指向圖像的指針(如C:\MyPics\Travels\lake.jpg)無法隨時(shí)用于編輯。