如何用VB存取SQL Server中的影象資料

才智咖 人氣:1.39W

如何用VB存取SQL Server中的影象資料

如何用VB存取SQL Server中的影象資料

何益斌 高景昌 李小琳

吉林大學130026

摘要 本文介紹MIS SQL Server對影象資料的儲存機制和存取方法。針對VB開發工具,介紹了一種通過ADO Field 物件的GetChunk 方法和AppendChunk 方法來存取MIS SQL Server中的影象資料的方法。

關鍵詞 ADO Field物件 BLOB 物件 GetChunk和AppendChunk 方法 image資料型別 醫院資訊系統

MIS SQL Server

在一個完善的醫院資訊MIS中,影象資料的存取是必不可少的,比如X光片、CT像片的儲存。一方面,這些影象資料在遠端診療為準確診斷病情提供了重要的依據,另一方面,也為快速查閱病人資料提供了基本條件。影象資料的存取在其它應用系統如GIS中也有廣泛的應用。

1、 SQL Server中影象資料的儲存機制

在MIS SQL Server 中,對於小於 8000 個位元組的影象資料可以用二進位制型(binary、varbinary)來表示。但通常要儲存的一些醫學影像圖片都會大於 8000個位元組。SQL Server提供了一種機制,能儲存每行大到 2G的二進位制物件(BLOB),這類物件可包括image、text和ntext三種資料型別。Image資料型別儲存的是二進位制資料,最大長度是 231-1 (2,147,483,647)個位元組[2][3]。

BLOB資料在MIS SQL Server系統中的儲存方式不同於普通的資料型別,對於普通型別的資料系統直接在使用者定義的.欄位上儲存資料值,而對於BLOB型別資料,系統開闢新的儲存頁面來存放這些資料,表中BLOB型別資料欄位存放的僅是一個16個位元組的指標,該指標指向存放該條記錄的BLOB資料的頁面。

2、 SQL Server中影象資料的存取

在MIS SQL Server中,當資料小於 8000 個位元組時,可以用普通的SQL操縱語句(SELECT、INSERT、UPDATE、DELETE)來完成對欄位的操縱,當資料大於8000個位元組時,SQL提供了 WRITETEXT 、READTEXT和UPDATETEXT這三個函式來讀取和修改資料。這三個函式的使用方法為:

(1) WRITETEXT {mn text_ptr}[WITH LOG] {data}

mn為表中的欄位,text_ptr為一個16個位元組的指標,data為要寫的資料值。可

選引數WITH LOG表示是否要寫入日誌檔案中。

例: DECLARE @ptrval binary(16) --指標

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

WRITETEXT zy__ct @ptrval 0x024324142342134214213421421454353452341