SQL Server中图像数据的存储

1SQL Server中图像数据的存储机制      在MIS SQL Server 中,对于小于 8000 个字节的图像数据可以用二进制型(binaryvarbinary)来表示。但通常要保存的一些医学影像图片都会大于 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操纵语句(SELECTINSERTUPDATEDELETE)来完成对字段的操纵,当数据大于8000个字节时,SQL提供了 WRITETEXT 、READTEXT和UPDATETEXT这三个函数来读取和修改数据。这三个函数的使用方法为: (1) WRITETEXT {table.column text_ptr}[WITH LOG] {data}  table.column为表中的字段,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.img_ct @ptrval 0x024324142342134214213421421454353452341 (2) READTEXT {table.column text_ptr offset size} [HOLDLOCK] table.column为表中的字段,text_ptr为一个16个字节的指针,offset 为偏移量,即从 第几个字节开始读数据,size为要读的字节数,HOLDLOCK 为在读数据中是否充许其他用户 修改该数据。 例: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为从 第几开始字节开始写,对于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 可以看出,这三个函数的使用比较复杂,虽然可以通过生成存贮过程来调用执行,但有一个缺陷是在读取数据时,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 调用则添加到现有数据。 由于系统资源总是有限的,如果一次读(存)取大量数据,可能会引起服务器、客户机死机或是服务器的性能大大下降,因此使用这两个函数时,要将图像数据进行分段读写。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LabVIEW 是一种强大的图形化编程环境,用于开发数据采集、分析和处理等应用。SQL Server 是一种关系型数据库管理系统,广泛用于存储和管理大规模数据。 在 LabVIEW 进行 SQL Server 亿级数据查询的关键是使用正确的方法和技巧。以下是在 LabVIEW 执行 SQL Server 亿级数据查询的步骤: 1. 首先,确保已经安装并配置好 SQL Server 数据库。可以使用 SQL Server Management Studio 创建和管理数据库以及表格。 2. 在 LabVIEW ,使用数据库连接工具包提供的数据库连接功能与 SQL Server 进行连接。通过输入正确的连接字符串、用户名和密码等信息,连接到 SQL Server 数据库。 3. 创建 SQL 查询语句。使用 SELECT 语句指定需要查询的表格和字段,并可以在语句使用 WHERE 条件过滤数据。对于亿级数据查询,可以使用分页查询的方式,每次查询一定数量的数据,以降低内存和时间开销。 4. 使用 LabVIEW 数据库查询函数执行 SQL 查询语句。通过执行查询语句,可以获取到返回的结果集。 5. 对于亿级数据查询,需要使用循环结构和分页查询来逐页获取数据。通过设置页码和每页数据量等参数,获取数据数据。可以将每页数据存储在 LabVIEW 数组或直接进行处理。 6. 对于处理大量数据,可以使用 LabVIEW 的并行计算功能来加快数据处理速度。通过将数据分割为多个部分并在不同的线程处理,可以提高处理效率。 7. 最后,根据查询结果进行数据分析和处理。根据实际需求,可以在 LabVIEW 进行各种统计分析、图像显示和报表生成等操作。 总之,LabVIEW 提供了强大的数据库连接功能和数据处理能力,可以使用合适的方法和技巧进行 SQL Server 亿级数据查询。通过合理的查询语句设计、分页查询和并行计算等技术手段,可以高效地处理大规模数据,并进行相应的分析和处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值