天天被操天天被操综合网,亚洲黄色一区二区三区性色,国产成人精品日本亚洲11,欧美zozo另类特级,www.黄片视频在线播放,啪啪网站永久免费看,特别一级a免费大片视频网站

現(xiàn)在位置:范文先生網(wǎng)>理工論文>計(jì)算機(jī)信息技術(shù)>如何用VB存取SQL Server中的圖像數(shù)據(jù)

如何用VB存取SQL Server中的圖像數(shù)據(jù)

時(shí)間:2022-12-05 13:45:23 計(jì)算機(jī)信息技術(shù) 我要投稿
  • 相關(guān)推薦

如何用VB存取SQL Server中的圖像數(shù)據(jù)

如何用VB存取SQL Server中的圖像數(shù)據(jù)

何益斌 高景昌 李小琳

吉林大學(xué)130026

 

摘要

  
本文介紹MIS SQL Server對圖像數(shù)據(jù)的存儲(chǔ)機(jī)制和存取方法。針對VB開發(fā)工具,介紹了一種通過ADO Field 對象的GetChunk 方法和AppendChunk 方法來存取MIS SQL Server中的圖像數(shù)據(jù)的方法。

關(guān)鍵詞

   ADO Field
對象  BLOB  對象 GetChunkAppendChunk 方法   image數(shù)據(jù)類型   醫(yī)院信息系統(tǒng)

 MIS SQL Server  

 

          在一個(gè)完善的醫(yī)院信息MIS中,圖像數(shù)據(jù)的存取是必不可少的,比如X光片、CT像片的保存。一方面,這些圖像數(shù)據(jù)在遠(yuǎn)程診療為準(zhǔn)確診斷病情提供了重要的依據(jù),另一方面,也為快速查閱病人資料提供了基本條件。圖像數(shù)據(jù)的存取在其它應(yīng)用系統(tǒng)如GIS中也有廣泛的應(yīng)用。

1、   SQL Server中圖像數(shù)據(jù)的存儲(chǔ)機(jī)制

     在MIS SQL Server 中,對于小于 8000 個(gè)字節(jié)的圖像數(shù)據(jù)可以用二進(jìn)制型(binary、varbinary)來表示。但通常要保存的一些醫(yī)學(xué)影像圖片都會(huì)大于 8000個(gè)字節(jié)。SQL Server提供了一種機(jī)制,能存儲(chǔ)每行大到 2G的二進(jìn)制對象(BLOB),這類對象可包括image、text和ntext三種數(shù)據(jù)類型。Image數(shù)據(jù)類型存儲(chǔ)的是二進(jìn)制數(shù)據(jù),最大長度是 231-1 (2,147,483,647)個(gè)字節(jié)[2][3]

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

2、 SQL Server中圖像數(shù)據(jù)的存取

MIS SQL Server中,當(dāng)數(shù)據(jù)小于 8000 個(gè)字節(jié)時(shí),可以用普通的SQL操縱語句(SELECT、INSERT、UPDATE、DELETE)來完成對字段的操縱,當(dāng)數(shù)據(jù)大于8000個(gè)字節(jié)時(shí),SQL提供了 WRITETEXT 、READTEXT和UPDATETEXT這三個(gè)函數(shù)來讀取和修改數(shù)據(jù)。這三個(gè)函數(shù)的使用方法為:

(1) WRITETEXT {table.column text_ptr}[WITH LOG] {data}

table.column為表中的字段,text_ptr為一個(gè)16個(gè)字節(jié)的指針,data為要寫的數(shù)據(jù)值。可

選參數(shù)WITH LOG表示是否要寫入日志文件中。

: DECLARE @ptrval     binary(16)  --指針

    SELECT @ptrval = TEXTPTR(img_ct) FROM zy_ct WHERE id_ct = 20010101001

    WRITETEXT zy_ct.img_ct @ptrval 0x024324142342134214213421421454353452341

(2) READTEXT {table.column text_ptr offset size} [HOLDLOCK]

table.column為表中的字段,text_ptr為一個(gè)16個(gè)字節(jié)的指針,offset 為偏移量,即從

第幾個(gè)字節(jié)開始讀數(shù)據(jù),size為要讀的字節(jié)數(shù),HOLDLOCK 為在讀數(shù)據(jù)中是否充許其他用戶

修改該數(shù)據(jù)。

例:DECLARE @ptrval varbinary(16)

    SELECT @ptrval = TEXTPTR(img_ct) FROM zy_ct WHERE id_ct = 20010101001

    READTEXT zy_ct.img_ct @ptrval 1 25

(3) UPDATETEXT {table_name.dest_column_name dest_text_ptr}{NULL|insert_offset}

{ NULL | delete_length}[WITH LOG][ inserted_data| {table_name.src_column_name src_text_ptr}]

table_name.dest_column_name 為要修改的text, ntext, 或 image字段;

dest_text_ptr為指向其的指針;insert_offset為偏移量,對于text和image為從

第幾開始字節(jié)開始寫,對于ntext為從第幾個(gè)字符(雙字節(jié))開始寫;delete_length

為從insert_offset開始刪除delete_length長度的字節(jié)(符),為0時(shí)不刪除,為NULL時(shí)

為刪除從insert_offset開始到結(jié)束的所有數(shù)據(jù)。要插入的數(shù)據(jù)為 inserted_data為,也可

是表table_name的src_column_name字段中指針 src_text_ptr所指數(shù)據(jù)。

: DECLARE @ptrval binary(16)

    SELECT @ptrval = TEXTPTR(img_ct) FROM zy_ct WHERE id_ct = 20010101001

    UPDATETEXT zy_ct.img_ct @ptrval 16 0x54345

可以看出,這三個(gè)函數(shù)的使用比較復(fù)雜,雖然可以通過生成存貯過程來調(diào)用執(zhí)行,但有一個(gè)缺陷是在讀取數(shù)據(jù)時(shí),READTEXT函數(shù)讀取的數(shù)據(jù)無法直接傳遞回前端應(yīng)用程序。

m.gymyzhishaji.com收集整理

3、 VB 6.0中圖像數(shù)據(jù)的存取

VB 6.0 的ADO Field 對象提供了GetChunk 方法和AppendChunk 方法來存取BLOB數(shù)據(jù)[1],這兩個(gè)函數(shù)實(shí)質(zhì)是通過API調(diào)用WRITETEXT 、READTEXT和UPDATETEXT這三個(gè)函數(shù),簡化了調(diào)用的方法。

1)GetChunk 和AppendChunk方法介紹

GetChunk 方法檢索其部分或全部長二進(jìn)制或字符數(shù)據(jù)[4]。GetChunk 調(diào)用返回的數(shù)據(jù)將賦給“變量”。如果 Size 大于剩余的數(shù)據(jù),則 GetChunk 僅返回剩余的數(shù)據(jù)而無需用空白填充“變量”。如果字段為空,則 GetChunk 方法返回 Null。每個(gè)后續(xù)的 GetChunk 調(diào)用將檢索從前一次 GetChunk 調(diào)用停止處開始的數(shù)據(jù)。但是,如果從一個(gè)字段檢索數(shù)據(jù)然后在當(dāng)前記錄中設(shè)置或讀取另一個(gè)字段的值,ADO 將認(rèn)為已從第一個(gè)字段中檢索出數(shù)據(jù)。如果在第一個(gè)字段上再次調(diào)用 GetChunk 方法,ADO 將把調(diào)用解釋為新的 GetChunk 操作并從記錄的起始處開始讀取。Field 對象的第一個(gè) AppendChunk 調(diào)用將數(shù)據(jù)寫入字段,覆蓋所有現(xiàn)有的數(shù)據(jù),隨后的 AppendChunk 調(diào)用則添加到現(xiàn)有數(shù)據(jù)。

由于系統(tǒng)資源總是有限的,如果一次讀(存)取大量數(shù)據(jù),可能會(huì)引起服務(wù)器、客戶機(jī)死機(jī)或是服務(wù)器的性能大大下降,因此使用這兩個(gè)函數(shù)時(shí),要將圖像數(shù)據(jù)進(jìn)行分段讀寫。

(2)程序?qū)崿F(xiàn)

程序一:寫數(shù)據(jù)函數(shù)

Public Function AppendBlobFromFile(blobColumn As ADODB.Field, ByVal FileName) As Boolean

Dim FileNumber     As Integer     '文件號

           Dim DataLen             As Long            '文件長度

Dim Chunks               As Long            '

【如何用VB存取SQL Server中的圖像數(shù)據(jù)】相關(guān)文章:

SQL Server數(shù)據(jù)庫教學(xué)方法探索05-30

開發(fā)基于SQL SERVER 的C/S數(shù)據(jù)庫應(yīng)用系統(tǒng)?08-06

Foxpro DBF數(shù)據(jù)庫轉(zhuǎn)換成SQL Server 6.5表的幾種方法08-06

SQL Server的七個(gè)問題及其解決辦法04-22

sql數(shù)據(jù)查詢實(shí)驗(yàn)心得09-04

ASP開發(fā)Browse/Server模式的Web數(shù)據(jù)庫08-06

sql數(shù)據(jù)庫備份和恢復(fù)常用操作08-12

基于Client/Server數(shù)據(jù)完整性約束的實(shí)現(xiàn)技術(shù)08-06

基于Client/Server數(shù)據(jù)完整性約束的實(shí)現(xiàn)技術(shù)08-06