admin 管理员组文章数量: 1086019
2024年5月5日发(作者:select count ( ) from)
SQL SERVER中进行图像存取的实现方法
在数据库应用项目开发中,经常会使用一些二进制的图像数据,存储和读取
显示图像数据主要采用的是路径链接法和内存流法。路径链接法是将图像文件保存
在固定的路径下,数据库中只存储图像文件的路径和名称,此方法数据库容量小,
存取速度快,但安全性较差;内存流法是将二进制数据直接存储在数据库中,此方
法对数据的共享非常方便,安全性相对较高,常用于图像容量不是很大的时候。
本文主要讨论通过SQL Server 2008使用内存流法如何实现二进制图像数据
的存储。
1 VARBINARY(MAX)数据类型简介
在SQL Server 2000和更早的版本中,如果每条记录的数据量远远超过了一
个单独记录的8K,我们常用IMAGE数据类型以二进制存储该数据,在使用IMAGE
数据类型时,数据是不和普通数据存储在一起的。一个被称作指针的很小的二进制
值,和普通数据存储在一起,这个二进制值指向数据文件里的数据实际存储的位
置。对IMAGE数据进行读取、插入数据时需要使用READTEXT[1]及WRITETEXT命
令,这两个命令需使用TEXTPTR函数来获得正确的二进制指针,这个二进制指针用
于定位物理文件中的数据,使用起来较麻烦。
虽然在SQL Server 2008中依然提供IMAGE数据类型,但微软计划在未来的
SQL Server版本中删除IMAGE数据类型, 用VARBINARY(MAX)数据类型来代替,在
该版本下不应当使用IMAGE这种类型。
VARBINARY(MAX) 为可变长度二进制数据,不限最大长度,常用于数据超出
8,000 字节时,可以直接使用insert命令添加数据,使用起来较简单。
2 使用T-SQL语句将图像文件直接读入VARBINARY(MAX)字段
首先在SQL Server 2008的查询窗口中创建测试数据库ImageDB,并建立
ImageTable表来存储图像数据:
CREATE DATABASE ImageTest
GO
USE ImageTest;
GO
CREATE TABLE ImageTable
(
ImageData varBinary(MAX)
);
然后使用insert命令将其插入到ImageTest表中(此处图像文件为
C:),OPENROWSET函数包含访问OLE DB数据源中的远程数据所需的全部
连接信息,内置的 BULK 访问接口支持大容量操作,实现的代码为:
INSERT INTO ImageTable (ImageData)
SELECT *
FROM OPENROWSET(BULK N'C:', SINGLE_BLOB) AS Photo
GO
版权声明:本文标题:sqlserver图片数据的存取 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1714873072a684091.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论