繁体   English   中英

图像的默认varbinary(max)值

[英]A default varbinary(max) value for image

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

如果您要存储文件/图像,我建议您查看FILESTREAM概述

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

FILESTREAM通过将varbinary(max)二进制大对象(BLOB)数据存储为文件系统上的文件,将SQL Server数据库引擎与NTFS文件系统集成在一起。 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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM