資源描述:
《基于delphi和sql server的圖像數(shù)據(jù)存取技術(shù) 》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、基于Delphi和SQLServer的圖像數(shù)據(jù)存取技術(shù)摘要:本文介紹了MicrosoftSQLServer中大型二進(jìn)制對(duì)象數(shù)據(jù)的存取機(jī)制,針對(duì)Delphi開發(fā)工具,介紹了一種通過文件流來存取MicrosoftSQLServer中的圖像數(shù)據(jù)的方法。 關(guān)鍵詞:大型二進(jìn)制對(duì)象image數(shù)據(jù)類型文件流數(shù)據(jù)庫引擎 一、引言 隨著信息技術(shù)的發(fā)展,越來越多的系統(tǒng)中需要存取圖像數(shù)據(jù),而對(duì)于圖像數(shù)據(jù)的保存有兩種方法:一種是將圖像數(shù)據(jù)以文件形式存放在磁盤中,在數(shù)據(jù)庫中只存儲(chǔ)這些文件的路徑和文件名;另一種是將圖像數(shù)據(jù)和其他數(shù)據(jù)一樣直接存儲(chǔ)在數(shù)據(jù)庫中。當(dāng)要處理大量圖像數(shù)據(jù)時(shí),把圖像數(shù)據(jù)直接存儲(chǔ)在數(shù)據(jù)庫中有
2、許多優(yōu)點(diǎn): 易于管理當(dāng)圖像數(shù)據(jù)與其他數(shù)據(jù)一起存儲(chǔ)在數(shù)據(jù)庫中時(shí),圖像數(shù)據(jù)與其他數(shù)據(jù)是一起備份和恢復(fù)的,這樣就減少了圖像數(shù)據(jù)與其他數(shù)據(jù)不同步的機(jī)會(huì),也降低了其他用戶無意中刪除了文件系統(tǒng)中圖像數(shù)據(jù)文件的風(fēng)險(xiǎn)。另外,由于圖像數(shù)據(jù)與其他數(shù)據(jù)一起存儲(chǔ)在數(shù)據(jù)庫中,其插入、更新和刪除可在同一個(gè)事務(wù)中實(shí)現(xiàn),確保了數(shù)據(jù)的一致性?! 】缮炜s性盡管文件系統(tǒng)被設(shè)計(jì)為能夠處理大量不同大小的對(duì)象,但是文件系統(tǒng)不能對(duì)大量小文件進(jìn)行優(yōu)化。在這種情況下,數(shù)據(jù)庫系統(tǒng)可以進(jìn)行優(yōu)化。 可用性數(shù)據(jù)庫復(fù)制允許在分布式環(huán)境中復(fù)制、分配和潛在地修改數(shù)據(jù)。在主系統(tǒng)失效的情況下,日志轉(zhuǎn)移提供了保留數(shù)據(jù)庫備用副本的方法?! ∫虼?,要真正做
3、到各類數(shù)據(jù)在數(shù)據(jù)庫中安全管理,研究和探索直接將圖像數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中的方法是非常必要的?! 《icrosoftSQLServer系統(tǒng)中的BLOB數(shù)據(jù)及其存取機(jī)制 BLOB(binarylargeobject,大型二進(jìn)制對(duì)象)數(shù)據(jù)類型主要用于保存多媒體對(duì)象,比如圖像、視頻和聲音。在MicrosoftSQLServer系統(tǒng)中,BLOB可以是text、ntext或image數(shù)據(jù)類型。其中,image數(shù)據(jù)類型用來存儲(chǔ)變長(zhǎng)的二進(jìn)制數(shù)據(jù),最大長(zhǎng)度是2GB,非常適合存儲(chǔ)圖像數(shù)據(jù)?! LOB數(shù)據(jù)在MicrosoftSQLServer系統(tǒng)中的存儲(chǔ)方式不同于普通的數(shù)據(jù)類型,對(duì)于普通類型的數(shù)據(jù)系統(tǒng)直接
4、在用戶定義的字段上存儲(chǔ)數(shù)據(jù)值,而對(duì)于BLOB類型數(shù)據(jù),系統(tǒng)開辟新的存儲(chǔ)頁面來存放這些數(shù)據(jù),表中BLOB類型數(shù)據(jù)字段存放的僅是一個(gè)16字節(jié)的指針,該指針指向存放該條記錄的BLOB數(shù)據(jù)的頁面。 在MicrosoftSQLServer系統(tǒng)中,當(dāng)數(shù)據(jù)小于8000字節(jié)時(shí),可以用普通的SQL語句(SELECT、INSERT、UPDATE、DELETE)來完成對(duì)數(shù)據(jù)的查詢操縱,當(dāng)數(shù)據(jù)大于8000字節(jié)時(shí),MicrosoftSQLServer提供了zy_cticrosoftSQLServer系統(tǒng)中圖像數(shù)據(jù)的簡(jiǎn)單方法。在SQLServer系統(tǒng)中建立表TEST,表中的字段及屬性見表1?! ”?TEST的字段
5、及屬性 三、使用Delphi存取MicrosoftSQLServer中的圖像數(shù)據(jù) 圖像數(shù)據(jù)的存儲(chǔ)格式有很多種類,常見的有BMP、JPEG、GIF等等,如果按照每種格式去單獨(dú)編寫存取代碼,就會(huì)使問題復(fù)雜化。但是,不論哪種格式的存盤文件,都可以看成文件“流”的形式。Delphi中的TFileStream數(shù)據(jù)類型以流的形式對(duì)字符或非字符數(shù)據(jù)進(jìn)行處理,就像在內(nèi)存中開辟了一個(gè)大小可變的臨時(shí)緩存區(qū)。它不僅能方便地對(duì)外部文件進(jìn)行讀寫,而且還可以將流中的全部數(shù)據(jù)直接轉(zhuǎn)入數(shù)據(jù)庫,可用它作橋梁完成圖像數(shù)據(jù)的存取?! 。ㄒ唬?shù)據(jù)集組件的選擇 在Delphi連接數(shù)據(jù)庫的BDE方式中,通常數(shù)據(jù)集組件可以選擇
6、TTable或TQuery,如果使用TQuery組件存取image類型數(shù)據(jù),不可避免地就要使用age類型數(shù)據(jù)的存取。<摘要:本文介紹了MicrosoftSQLServer中大型二進(jìn)制對(duì)象數(shù)據(jù)的存取機(jī)制,針對(duì)Delphi開發(fā)工具,介紹了一種通過文件流來存取MicrosoftSQLServer中的圖像數(shù)據(jù)的方法?! £P(guān)鍵詞:大型二進(jìn)制對(duì)象image數(shù)據(jù)類型文件流數(shù)據(jù)庫引擎 一、引言 隨著信息技術(shù)的發(fā)展,越來越多的系統(tǒng)中需要存取圖像數(shù)據(jù),而對(duì)于圖像數(shù)據(jù)的保存有兩種方法:一種是將圖像數(shù)據(jù)以文件形式存放在磁盤中,在數(shù)據(jù)庫中只存儲(chǔ)這些文件的路徑和文件名;另一種是將圖像數(shù)據(jù)和其他數(shù)據(jù)一樣直接存儲(chǔ)在
7、數(shù)據(jù)庫中。當(dāng)要處理大量圖像數(shù)據(jù)時(shí),把圖像數(shù)據(jù)直接存儲(chǔ)在數(shù)據(jù)庫中有許多優(yōu)點(diǎn): 易于管理當(dāng)圖像數(shù)據(jù)與其他數(shù)據(jù)一起存儲(chǔ)在數(shù)據(jù)庫中時(shí),圖像數(shù)據(jù)與其他數(shù)據(jù)是一起備份和恢復(fù)的,這樣就減少了圖像數(shù)據(jù)與其他數(shù)據(jù)不同步的機(jī)會(huì),也降低了其他用戶無意中刪除了文件系統(tǒng)中圖像數(shù)據(jù)文件的風(fēng)險(xiǎn)。另外,由于圖像數(shù)據(jù)與其他數(shù)據(jù)一起存儲(chǔ)在數(shù)據(jù)庫中,其插入、更新和刪除可在同一個(gè)事務(wù)中實(shí)現(xiàn),確保了數(shù)據(jù)的一致性。 可伸縮性盡管文件系統(tǒng)被設(shè)計(jì)為能夠處理大量不同大小的對(duì)象,