如何用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