SQL Server:存储图像和BLOB文件(二)
2008-04-14 09:54:28 来源:WEB开发网在本系列的第一篇文章中,我们讨论了二进制和BLOB(二进制大型对象)的定义,以及在什么情况下应当将这些对象存储在SQL Server里。将图像和二进制数据存储在SQL Server内部的原因包括方便安全性管理、客户访问之便和事务控制。本文将着眼于varBinary(MAX)数据类型,在SQL Server 2005和2008中都有这种数据类型,其扩展说明符(MAX)意味着不设置文件大小的上限。“var”指文件大小是可变,不像标准二进制数据类型那样是个固定值。在SQL Server的联机丛书提供了三种二进制数据类型的使用条件说明:当表列的所有输入数据大小为固定值(且长度小于8000字节)时,使用标准二进制Binary数据类型;当表列的输入数据长度有很大差别(且长度均小于8000字节)时,使用varBinary数据类型;当表列输入数据长度超过8000字节时,使用varBinary(max) 数据类型。对于SQL Server 2000,则使用图像(Image)数据类型。不过请记住,微软已经声明图像数据类型是为了向下兼容才保留下来的,而且可能会在未来的版本中停止使用。
例表
首先,我们要创建一个测试数据库和表来装载我们的图片。使用以下的T-SQL语句:
USEmaster;
GO
CREATEDATABASETest;
GO
USETest;
GO
CREATETABLEBLOBTest
(
TestIDintIDENTITY(1,1),
BLOBNamevarChar(50),
BLOBDatavarBinary(MAX)
);
在本例中,列的名称为 BLOBData,不过您可以使用任何标准的SQL名称为列命名。二进制数据类型对命名没有任何限制。
如果您运行的是SQL Server 2005和2008,找一张小图片,并执行下面的T-SQL语句插入该图像来测试数据库。该语句在SQL Server 2000中无效,因为只有varBinary(MAX)数据类型才能成为插入目标:
- ››SQL Server 2008 R2 下如何清理数据库日志文件
- ››sqlite 存取中文的解决方法
- ››SQL2005、2008、2000 清空删除日志
- ››SQL Server 2005和SQL Server 2000数据的相互导入...
- ››sql server 2008 在安装了活动目录以后无法启动服...
- ››sqlserver 每30分自动生成一次
- ››sqlite 数据库 对 BOOL型 数据的插入处理正确用法...
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
更多精彩
赞助商链接