国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SQL Server存儲(chǔ)圖像數(shù)據(jù)的策略與方法

瀏覽:2日期:2023-10-29 11:15:41

目前對(duì)于圖像數(shù)據(jù)的管理大都采用表+實(shí)體的方法,即圖像數(shù)據(jù)以文件形式存放于指定的計(jì)算機(jī)目錄下,在數(shù)據(jù)庫(kù)表中只反映圖像數(shù)據(jù)文件的存儲(chǔ)路徑。這種管理模式,給數(shù)據(jù)的維護(hù)增加了難度,同時(shí),也給數(shù)據(jù)的安全帶來(lái)一定的隱患。因此,要真正做到各類數(shù)據(jù)在數(shù)據(jù)庫(kù)中安全管理,研究和探索直接將圖像數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)關(guān)系表中的方法是非常必要的。

筆者在Visual Basic 6.0開(kāi)發(fā)環(huán)境中,采用客戶機(jī)/服務(wù)器的工作方式,針對(duì)SQL Server數(shù)據(jù)庫(kù)關(guān)系表中存儲(chǔ)圖像數(shù)據(jù)的問(wèn)題進(jìn)行了初步探討,提出了一套基本解決方案,供讀者參考。

一、 存儲(chǔ)圖像數(shù)據(jù)的策略

圖像數(shù)據(jù)庫(kù)技術(shù)一直致力于解決海量數(shù)字圖像的有效存儲(chǔ)和管理問(wèn)題。它是數(shù)據(jù)庫(kù)技術(shù)的繼承和發(fā)展,一方面,圖像數(shù)據(jù)和文本數(shù)據(jù)存在著本質(zhì)的區(qū)別,在文本數(shù)據(jù)領(lǐng)域得以成功應(yīng)用的傳統(tǒng)數(shù)據(jù)庫(kù)技術(shù),如果一成不變的照搬到圖像數(shù)據(jù)庫(kù)領(lǐng)域,結(jié)果往往是低效,甚至無(wú)效;另一方面,傳統(tǒng)數(shù)據(jù)庫(kù)的許多成果,如SQL語(yǔ)言、索引技術(shù)等都值得圖像數(shù)據(jù)庫(kù)借鑒。上述兩個(gè)方面的結(jié)合成為目前圖像數(shù)據(jù)庫(kù)技術(shù)發(fā)展的主流。

1.1 BLOB數(shù)據(jù)類型

BLOB是非常巨大的不定的二進(jìn)制或者字符型數(shù)據(jù),通常是文檔(.txt、.doc)和圖片(.jpeg、.gif、.bmp),它可以存儲(chǔ)在數(shù)據(jù)庫(kù)中。在SQL Server中,BLOB可以是text、ntext或者image數(shù)據(jù)類型。 Image數(shù)據(jù)類型存儲(chǔ)的是長(zhǎng)度不確定的二進(jìn)制數(shù)據(jù),最大長(zhǎng)度是2GB。

BLOB數(shù)據(jù)在SQL Server系統(tǒng)中的存儲(chǔ)方式不同于普通的數(shù)據(jù)類型,對(duì)于普通類型的數(shù)據(jù)系統(tǒng)直接在用戶定義的字段上存儲(chǔ)數(shù)據(jù)值,而對(duì)于BLOB類型數(shù)據(jù),系統(tǒng)開(kāi)辟新的存儲(chǔ)頁(yè)面來(lái)存放這些數(shù)據(jù),表中BLOB類型數(shù)據(jù)字段存放的僅是一個(gè)16個(gè)字節(jié)的指針,該指針指向存放該條記錄的BLOB數(shù)據(jù)的頁(yè)面。

1.2 BLOB的設(shè)計(jì)策略

BLOB數(shù)據(jù)是數(shù)據(jù)量很大的數(shù)據(jù)類型,它會(huì)占用大量的硬盤(pán)空間、內(nèi)存和網(wǎng)絡(luò)資源,因此合理地設(shè)計(jì)包含有BLOB數(shù)據(jù)類型的屬性表,對(duì)提高存儲(chǔ)效率、查詢速度有很大的影響。一般BLOB的設(shè)計(jì)原則如下:

(1) 使用BLOB數(shù)據(jù)類型還是使用varchar或者varbinary數(shù)據(jù)類型

二進(jìn)制大對(duì)象并不一定要存儲(chǔ)為text、ntext或者image數(shù)據(jù)類型,它們也可以作為varchar或者varbinary數(shù)據(jù)類型村處在表格中。數(shù)據(jù)類型的選擇要根據(jù)將要存儲(chǔ)的BLOB的實(shí)際大小。如果數(shù)據(jù)不會(huì)超過(guò)8K,那么就使用Varchar或者varbinary數(shù)據(jù)類型。如果這些大對(duì)象的尺寸超過(guò)8K,那么就使用text、ntext或者image數(shù)據(jù)類型。

(2) 存儲(chǔ)BLOB在數(shù)據(jù)庫(kù)中或者在文件系統(tǒng)中

常見(jiàn)的設(shè)計(jì)問(wèn)題是將圖片存在數(shù)據(jù)庫(kù)中還是存在文件系統(tǒng)中。在大多數(shù)情況下,最好把圖片文件與其它數(shù)據(jù)一起存在數(shù)據(jù)庫(kù)中。因?yàn)閷⒂跋駭?shù)據(jù)文件存儲(chǔ)在數(shù)據(jù)庫(kù)中有許多優(yōu)點(diǎn):

易于管理 當(dāng)BLOB與其他數(shù)據(jù)一起存儲(chǔ)在數(shù)據(jù)庫(kù)中時(shí),BLOB和表格是數(shù)據(jù)一起備份和恢復(fù)。這樣就降低了表格數(shù)據(jù)與BLOB數(shù)據(jù)不同步的機(jī)會(huì),而且降低了其他用戶無(wú)意中刪除了文件系統(tǒng)中BLOB數(shù)據(jù)位置的路徑和風(fēng)險(xiǎn)。另外,將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中BLOB和其他數(shù)據(jù)的插入、更新和刪除都在同一個(gè)事務(wù)中實(shí)現(xiàn)。這樣就確保了數(shù)據(jù)的一致性和文件與數(shù)據(jù)庫(kù)之間的一致性。還有一點(diǎn)好處是不需要為文件系統(tǒng)中的文件單獨(dú)設(shè)置安全性。

可伸縮性 盡管文件系統(tǒng)被設(shè)計(jì)為能夠處理大量不同大小的對(duì)象,但是文件系統(tǒng)不能對(duì)大量小文件進(jìn)行優(yōu)化。在這種情況下,數(shù)據(jù)庫(kù)系統(tǒng)可以進(jìn)行優(yōu)化。

可用性 數(shù)據(jù)庫(kù)具有比文件系統(tǒng)更多的可用性。數(shù)據(jù)庫(kù)復(fù)制允許在分布式環(huán)境中復(fù)制、分配和潛在的修改數(shù)據(jù)。在主系統(tǒng)失效的情況下,日志轉(zhuǎn)移提供了保留數(shù)據(jù)庫(kù)備用副本的方法。

當(dāng)然,在某些情況下,將圖片存儲(chǔ)在文件系統(tǒng)中將是更好的選擇:

(1)使用圖片的應(yīng)用程序需要數(shù)據(jù)流性能,例如實(shí)時(shí)的視頻重現(xiàn)。

(2)象Microsoft PhotoDraw或者Adobe Photoshop這樣的應(yīng)用程序經(jīng)常訪問(wèn)BLOB,這些應(yīng)用程序只知道怎樣訪問(wèn)文件。

(3)需要使用一些NTFS文件系統(tǒng)中的特殊功能,例如遠(yuǎn)程存儲(chǔ)。二、 存儲(chǔ)圖像數(shù)據(jù)的方法

1 建立具有image宇段的SQL Server數(shù)據(jù)庫(kù)

當(dāng)需要在SQL Server數(shù)據(jù)庫(kù)中存儲(chǔ)圖像數(shù)據(jù)時(shí),首先應(yīng)建立包含image數(shù)據(jù)類型字段的數(shù)據(jù)庫(kù)關(guān)系表。SQL Server數(shù)據(jù)庫(kù)平臺(tái)支持的數(shù)據(jù)類型中,image數(shù)據(jù)類型主要用于存儲(chǔ)圖像數(shù)據(jù)等大段的二進(jìn)制數(shù)據(jù)。SQL Server 7.0之后的版本,image類型可存儲(chǔ)2GB的數(shù)據(jù)。

2 使用Remote Data控件建立與數(shù)據(jù)庫(kù)的連接

Remote Data控件是在Visual Basic應(yīng)用程序中用來(lái)獲取遠(yuǎn)程數(shù)據(jù)的控件。它在.遠(yuǎn)程數(shù)據(jù)對(duì)象(RDO)和數(shù)據(jù)綁定控件之間提供了接口,只要給它提供有關(guān)數(shù)據(jù)存儲(chǔ)的位置、獲取的數(shù)據(jù)和一些接口控制,就可以連接到數(shù)據(jù)庫(kù),實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的基本操作。

使用Remote Data控件建立與遠(yuǎn)程數(shù)據(jù)庫(kù)的連接步驟如下:

1.在Visual Basic的窗體中加入一個(gè)Remote Data控件。 ,

2.在Remote Data控件DataSourceName屬性的下拉列表中選擇一個(gè)ODBC數(shù)據(jù)源。例如pubs。

3.在Remote Data控件的SQL屬性中輸入SQL查詢語(yǔ)句。例如,Select * from pub_info。

2.3 綁定OLE和Remote Data控件實(shí)現(xiàn)圖像數(shù)據(jù)的存儲(chǔ)與編輯

OLE是允許應(yīng)用程序相互之間交換和顯示數(shù)據(jù)的一項(xiàng)技術(shù),使用OLE,可以從支持OLE技術(shù)的任何應(yīng)用程序中讀取信息,也可以在任何支持OLE的程序中顯示和編輯它。在Visual Basic中,可利用OLE容器控件與Remote Data控件的綁定,來(lái)實(shí)現(xiàn)顯示、存儲(chǔ)和編輯SQL Serve數(shù)據(jù)庫(kù)中的image類型數(shù)據(jù)。

1.顯示SQL Serve數(shù)據(jù)庫(kù)image類型字段的圖像數(shù)據(jù)

具體步驟如下:

(1)在加入了Remote Data控件的Visual Basic的窗體中,添加一個(gè)OLE容器控件。創(chuàng)建OLE容器控件時(shí),會(huì)出現(xiàn)“插入對(duì)象’:對(duì)話框,此時(shí)點(diǎn)擊“取消”按鈕,不必為該容器指定對(duì)象。

(2)將OLE容器控件的DataSource屬性設(shè)置為Remote Data控件的名字,實(shí)現(xiàn)控件的綁定。

(3)在OLE容器控件。DataField屬性的下拉列表中選擇要顯示的字段名。例如,logo。

(4)運(yùn)行應(yīng)用程序。對(duì)于包含image數(shù)據(jù)類型的logo字段的數(shù)據(jù)將在OLE容器控件中顯示一幅圖像。

2.在SQL Sever數(shù)據(jù)庫(kù)image類型字段中添加存儲(chǔ)圖像數(shù)據(jù)

具體步驟如下:

(1)將Remote Data控件的EOFAction屬性設(shè)置為rdAddNew,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的數(shù)據(jù)添加功能。

(2)在Visual Baisic的窗體中添加一個(gè)CommandButton控件,并編寫(xiě)圖像文件嵌入OLE容器控件的程序代碼。例如:

Private Sub Command_Click()

OLEl.CreateEmbed“c:\圖片.bmp”

End Sub

(3)運(yùn)行應(yīng)用程序,點(diǎn)擊Remote Data控件的記錄指示按鈕,移動(dòng)到新的記錄,然后點(diǎn)擊CommandButton控件按鈕,實(shí)現(xiàn)圖像數(shù)據(jù)的添加入庫(kù)操作。

3.編輯SQL Serve數(shù)據(jù)庫(kù)image數(shù)據(jù)類型字段的圖像數(shù)據(jù)

具體步驟如下:

(1)在Visual Basic的窗體中添加一個(gè)CommandButton控件,編寫(xiě)對(duì)OLE對(duì)象的編輯程序代碼。例如:

Private Sub Command2--_Click()

OLEl.DoVerb VbOLEOpen

End Sub;

(2)運(yùn)行應(yīng)用程序,點(diǎn)擊Remote Data控件的記錄指示按鈕,選擇需要編輯的圖像,然后點(diǎn)擊CommandButton控件按鈕,在分隔的應(yīng)用程序窗口打開(kāi)對(duì)象,進(jìn)行圖像的編輯操作。

4、圖像文件自動(dòng)入庫(kù)方式的實(shí)現(xiàn)

在數(shù)據(jù)庫(kù)的實(shí)際應(yīng)用中,經(jīng)常需要將圖像文件批量存儲(chǔ),以提高數(shù)據(jù)入庫(kù)操作的自動(dòng)化程度。對(duì)于圖像文件批量存儲(chǔ),在程序代碼的編寫(xiě)中,可充分利用OLE容器控件與RemoteData控件的諸多屬性和方法,加以實(shí)現(xiàn)。

具體步驟如下:

(1)將OLE和RemoteData控件的Visible屬性設(shè)置成False,使OLE和RemoteData控件不可視。

(2)建立圖像文件的批處理文件。

(3)編寫(xiě)以下基本代碼,實(shí)現(xiàn)批處理功能。

Private Sub Command3_Click()

Dim FileName As String

Open 'c:\tesffile.txt'ForlnputAs#1'打開(kāi)批處理文件。

DoWhileNotEOF(1)'循環(huán)至文件尾。

Input#l,F(xiàn)ileName'讀入圖像文件名。

MSRDCl.Resultset.AddNew‘結(jié)果集添加記錄

OLEl.CreateEmbedFileName‘嵌入圖像文件

MSRDCl.Resultset.Update

Loop

Close #1

End Sub

(4)運(yùn)行應(yīng)用程序。點(diǎn)擊CommandButton控件按鈕,完成圖像文件的自動(dòng)入庫(kù)。

五、結(jié)束語(yǔ)

隨著SQL Serve數(shù)據(jù)庫(kù)管理系統(tǒng)功能的不斷增強(qiáng)、性能的不斷完善,將各類數(shù)據(jù)完全由數(shù)據(jù)庫(kù)管理系統(tǒng)統(tǒng)一存儲(chǔ)和管理,已成為技術(shù)發(fā)展的趨勢(shì)。只有這樣,SQL Serve數(shù)據(jù)庫(kù)管理系統(tǒng)的強(qiáng)大功能才能得到充分發(fā)揮,數(shù)據(jù)的安全性才能得到充分的保障,使得諸如數(shù)據(jù)庫(kù)復(fù)制、數(shù)據(jù)的轉(zhuǎn)移等許多工作,變得非常簡(jiǎn)單容易。

主站蜘蛛池模板: 亚洲孕交| 日韩欧美亚洲天堂 | 在线不卡一区 | 99久久综合给久久精品 | 国产短裙黑色丝袜在线观看下 | 国产成人免费高清视频网址 | mm在线视频免费看 | 亚洲黄色免费在线观看 | 日本特黄特色视频 | 国产在线观看免费人成小说 | 成人综合在线视频 | 欧美最大成人毛片视频网站 | 欧美成人精品大片免费流量 | 久久午夜影视 | 欧美大片a一级毛片视频 | 欧美日韩加勒比一区二区三区 | 国产理论在线观看 | 美女福利视频国产片 | 在线看片亚洲 | 18videosex性欧美69| 久久久久久青草大香综合精品 | 日本精品久久久久久久久免费 | 国产菲菲视频在线观看 | 亚洲mm8成为人影院 亚洲m男在线中文字幕 | 中文国产日韩欧美视频 | 99r8这是只有精品视频9 | 日本一级毛片高清免费观看视频 | 97在线免费视频 | 国产成人v视频在线观看 | 亚洲成人精品久久 | 国产成人 免费观看 | 亚洲伊人色一综合网 | 欧美高清在线精品一区 | 一级毛片免费观看不卡的 | 欧美aaaaa一级毛片在线 | 美国的毛片免费的 | 国产伦理久久精品久久久久 | m男亚洲一区中文字幕 | 亚洲欧美精品中文字幕 | 中文字幕 亚洲精品 第1页 | 国产丝袜美女一区二区三区 |