怎樣用VB存取SQL Server中的圖像數(shù)據(jù)_Mssql數(shù)據(jù)庫(kù)教程
推薦:淺談SQL Server數(shù)據(jù)倉(cāng)庫(kù)相關(guān)概念及構(gòu)建流程基本概念: 1.多維數(shù)據(jù)集:多維數(shù)據(jù)集是聯(lián)機(jī)分析處理 (OLAP) 中的主要對(duì)象,是一項(xiàng)可對(duì)數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)進(jìn)行快速訪問(wèn)的技術(shù)。多維數(shù)據(jù)集是一個(gè)數(shù)據(jù)集合,通常從數(shù)據(jù)倉(cāng)庫(kù)的子集構(gòu)造,并組織和匯總成一個(gè)由一組維度和度量值定義的多維結(jié)構(gòu)。 2.維度:是多維數(shù)
本文介紹MIS SQL Server對(duì)圖像數(shù)據(jù)的存儲(chǔ)機(jī)制和存取方法。針對(duì)VB開(kāi)發(fā)工具,介紹了一種通過(guò)ADO Field 對(duì)象的GetChunk 方法和AppendChunk 方法來(lái)存取MIS SQL Server中的圖像數(shù)據(jù)的方法。
在一個(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 中,對(duì)于小于 8000 個(gè)字節(jié)的圖像數(shù)據(jù)可以用二進(jìn)制型(binary、varbinary)來(lái)表示。但通常要保存的一些醫(yī)學(xué)影像圖片都會(huì)大于 8000個(gè)字節(jié)。SQL Server提供了一種機(jī)制,能存儲(chǔ)每行大到 2GB的二進(jìn)制對(duì)象(BLOB),這類對(duì)象可包括image、text和ntext三種數(shù)據(jù)類型。Image數(shù)據(jù)類型存儲(chǔ)的是二進(jìn)制數(shù)據(jù),最大長(zhǎng)度是 231-1 (2,147,483,647)個(gè)字節(jié)。
BLOB數(shù)據(jù)在MIS 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è)面。
2、 SQL Server中圖像數(shù)據(jù)的存取
在MIS SQL Server中,當(dāng)數(shù)據(jù)小于 8000 個(gè)字節(jié)時(shí),可以用普通的SQL操縱語(yǔ)句(SELECT、INSERT、UPDATE、DELETE)來(lái)完成對(duì)字段的操縱,當(dāng)數(shù)據(jù)大于8000個(gè)字節(jié)時(shí),SQL提供了 WRITETEXT 、READTEXT和UPDATETEXT這三個(gè)函數(shù)來(lái)讀取和修改數(shù)據(jù)。這三個(gè)函數(shù)的使用方法為:
(1) WRITETEXT {table.column text_ptr}[WITH LOG] {data}
table.column為表中的字段,text_ptr為一個(gè)16個(gè)字節(jié)的指針,data為要寫的數(shù)據(jù)值�?蛇x參數(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é)開(kāi)始讀數(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為偏移量,對(duì)于text和image為從第幾開(kāi)始字節(jié)開(kāi)始寫,對(duì)于ntext為從第幾個(gè)字符(雙字節(jié))開(kāi)始寫;delete_length為從insert_offset開(kāi)始刪除delete_length長(zhǎng)度的字節(jié)(符),為0時(shí)不刪除,為NULL時(shí)為刪除從insert_offset開(kāi)始到結(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ù)雜,雖然可以通過(guò)生成存貯過(guò)程來(lái)調(diào)用執(zhí)行,但有一個(gè)缺陷是在讀取數(shù)據(jù)時(shí),READTEXT函數(shù)讀取的數(shù)據(jù)無(wú)法直接傳遞回前端應(yīng)用程序。
分享:解答SQL Server 的內(nèi)存為何不斷增加當(dāng)SQL Server 數(shù)據(jù)庫(kù)引擎在 Microsoft Windows NT 或 Windows 2000 上運(yùn)行時(shí),其默認(rèn)內(nèi)存管理行為并不是獲取特定的內(nèi)存量,而是在不產(chǎn)生多余換頁(yè) I/O 的情況下獲取盡可能多的內(nèi)存。為此,數(shù)據(jù)庫(kù)引擎獲取盡可能多的可用內(nèi)存,同時(shí)保留足夠的可用內(nèi)存以防操作
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無(wú)法查看數(shù)據(jù)庫(kù),提示 無(wú)法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過(guò)程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- 解讀編寫和優(yōu)化SQL Server的存儲(chǔ)過(guò)程
- char、varchar、text和nchar、nvarchar、ntext的區(qū)別
- 兩種技巧處理SQL Server中的單引號(hào)
- 解析SQL Server 2008升級(jí)報(bào)表服務(wù)器數(shù)據(jù)庫(kù)
- 總結(jié)經(jīng)典常用的SQL語(yǔ)句(2)
- SQL Server導(dǎo)入數(shù)據(jù)時(shí)id自增屬性丟失解決方法
- SQL Server 索引基礎(chǔ)知識(shí)(2)----聚集索引,非聚集索引
- 揭秘SQL Server數(shù)據(jù)庫(kù)系統(tǒng)的編譯
- sqlserver2005自動(dòng)創(chuàng)建數(shù)據(jù)表和自動(dòng)添加某個(gè)字段索引
- SSB(SQLservice Service Broker) 入門實(shí)例介紹
猜你也喜歡看這些
- SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法
- 網(wǎng)站模板MySQL timestamp自動(dòng)更新時(shí)間
- MySQL多表之間字段的匹配實(shí)現(xiàn)代碼
- linux下mysql提示mysql deamon failed to start錯(cuò)誤的解決方法
- 網(wǎng)站數(shù)據(jù)多了分頁(yè)慢該怎么辦?
- MySQL筆記之字符串函數(shù)的應(yīng)用
- java連接mysql數(shù)據(jù)庫(kù)亂碼怎么辦
- 關(guān)于數(shù)據(jù)庫(kù)中保留小數(shù)位的問(wèn)題
- 解析如何使用Zend Framework 連接數(shù)據(jù)庫(kù)
- 基于mysql查詢語(yǔ)句的使用詳解
- 相關(guān)鏈接:
- 教程說(shuō)明:
Mssql數(shù)據(jù)庫(kù)教程-怎樣用VB存取SQL Server中的圖像數(shù)據(jù)
。