图像的默认varbinary(max)值

本文关键字:max varbinary 默认 图像 | 更新日期: 2023-09-27 18:27:50

我有一个web应用程序,它有一个用户来插入图像。我正在寻找在数据库(SQL Server 2008)中设置默认varbinary(MAX)值的方法。也许是像Facebook这样的东西,一旦你注册,就会有一个默认的个人资料图片。我可以将图像上传到数据库并显示出来。我可以将这些图像生成为PDF文件(if the image column is NOT NULL),否则我会在解码图像时出错,所以我需要一个默认的varbinary(MAX)图像来表示没有插入图像列。请帮助我在我的项目中真正需要它。

图像的默认varbinary(max)值

如果您正在考虑存储文件/图像,我建议您查看FILESTREAM概述

每天创建的大部分数据都是非结构化数据,例如作为文本文档、图像和视频。这种非结构化数据通常存储在数据库外部,与结构化数据分离。这分离可能导致数据管理的复杂性。或者,如果数据与结构化存储相关联的文件流功能并且性能可能受到限制。

FILESTREAM将SQL Server数据库引擎与NTFS文件集成通过将varbinary(max)二进制大对象(BLOB)数据存储为文件系统中的文件。Transact-SQL语句可以插入、更新、,查询、搜索和备份FILESTREAM数据。Win32文件系统接口提供对数据的流式访问。

FILESTREAM使用NT系统缓存来缓存文件数据。这有助于减少FILESTREAM数据可能对数据库引擎产生的任何影响表演未使用SQL Server缓冲池;因此内存可用于查询处理。

您可以使用以下代码将图像或任何类型的文件插入SQL行:

/*get blob from file, store in variable*/
declare @blob as varbinary(max)
set @blob = (
    Select BulkColumn from Openrowset
    ( Bulk 'c:'temp'MyImage.jpg', Single_Blob) as tt)
/* insert blob into row */
insert into dbo.MyImageTable (Name, Blob) 
values('SomeName',@blob)    

使用此功能,您可以在表上存储一个默认图像,然后使用以下简单连接将其链接到需要默认图像的行:

 select * from MyData join MyImageTable on MyImageTable.Name='SomeName'