SQL Server存储图像数据大阅兵

文章描述的是SQL Server存储图像数据,我们大家都知道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 {table.column text_ptr}[WITH LOG] {data} table.column为表中的字段,text_ptr为一个16个字节的指针,data为要写的数据值。可 选参数WITH LOG表示是否要写入日志文件中。

例:

  1. DECLARE @ptrval binary(16) --指针 SELECT @ptrval =   
  2. TEXTPTR(img_ct) FROM zy_ct WHERE id_ct = 20010101001 WRITETEXT zy_ct.img_ct @ptrval  
  3. 0x024324142342134214213421421454353452341 (2) READTEXT {table.column text_ptr offset size} [HOLDLOCK] table.column  

为表中的字段,text_ptr为一个16个字节的指针,offset 为偏移量,即从 第几个字节开始读数据,size为要读的字节数,HOLDLOCK 为在读数据中是否充许其他用户 修改该数据。

例:

  1. DECLARE @ptrval varbinary(16) SELECT @ptrval = TEXTPTR(img_ct)   
  2. FROM zy_ct WHERE id_ct = 20010101001 READTEXT zy_ct.img_ct @ptrval   
  3. 1 25 (3) UPDATETEXT {table_name.dest_column_name dest_text_ptr}{NULL|insert_offset} { NULL |   
  4. 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为从 第几开始字节开始写,对于ntext为从第几个字符(双字节)开始写;delete_length 为从insert_offset开始删除delete_length长度的字节(符),为0时不删除,为NULL时 为删除从insert_offset开始到结束的所有数据。要插入的数据为 inserted_data为,也可 是表table_name的src_column_name字段中指针 src_text_ptr所指数据。

例: DECLARE @ptrval binary(16) SELECT @ptrval = TEXTPTR(img_ct) FROM zy_ct WHERE id_ct = 20010101001 UPDATETEXT zy_ct.img_ct @ptrval 16 0x54345 可以看出,这三个函数的使用比较复杂,虽然可以通过生成存贮过程来调用执行SQL Server存储图像数据,但有一个缺陷是在读取数据时,READTEXT函数读取的数据无法直接传递回前端应用程序。

3、 VB 6.0中图像数据的存取 VB 6.0 的ADO Field 对象提供了GetChunk 方法和AppendChunk 方法来存取BLOB数据[1],这两个函数实质是通过API调用WRITETEXT 、READTEXT和UPDATETEXT这三个函数,简化了调用的方法。

(1)GetChunk 和AppendChunk方法介绍 GetChunk 方法检索其部分或全部长二进制或字符数据[4]。GetChunk 调用返回的数据将赋给“变量”。如果 Size 大于剩余的数据,则 GetChunk 仅返回剩余的数据而无需用空白填充“变量”。如果字段为空,则 GetChunk 方法返回 Null。

每个后续的 GetChunk 调用将检索从前一次 GetChunk 调用停止处开始的数据。但是,如果从一个字段检索数据然后在当前记录中设置或读取另一个字段的值,ADO 将认为已从***个字段中检索出数据。

如果在***个字段上再次调用 GetChunk 方法,ADO 将把调用解释为新的 GetChunk 操作并从记录的起始处开始读取。Field 对象的***个 AppendChunk 调用将数据写入字段,覆盖所有现有的数据,随后的 AppendChunk 调用则添加到现有数据。

由于系统资源总是有限的,如果一次读(存)取大量数据SQL Server存储图像数据,可能会引起服务器、客户机死机或是服务器的性能大大下降,因此使用这两个函数时,要将图像数据进行分段读写。

【编辑推荐】

  1. SQL Server浮点数据类型的详细解析
  2. SQL Server 使用索引来对数据访问进行优化
  3. 卸载SQL Server 2005组件的正确顺序
  4. SQL Server使用检查约束来验证数据实战演示
  5. SQL Server存储过程的命名标准如何进行?

     

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/228863.html<

(0)
运维的头像运维
上一篇2025-04-18 12:16
下一篇 2025-04-18 12:17

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注