我有一个用户可以插入图像的 Web 应用程序。我正在寻找一种varbinary(MAX)
在数据库中设置默认值的方法(SQL Server 2008)
。也许像 Facebook 这样的东西,一旦你注册就会有一个默认的个人资料图片。我能够将图像上传到数据库并显示出来。我能够将这些图像生成为 PDF 文件(if the image column is NOT NULL)
,否则我在解码图像时出错,因此我需要一个默认varbinary(MAX)
图像来表示未插入图像列。请帮助我真正需要它的项目。
问问题
2363 次
2 回答
1
如果您正在查看存储文件/图像,我建议您查看FILESTREAM 概述
每天创建的大部分数据都是非结构化数据,例如文本文档、图像和视频。这种非结构化数据通常存储在数据库之外,与其结构化数据分开。这种分离会导致数据管理的复杂性。或者,如果数据与结构化存储相关联,则文件流功能和性能可能会受到限制。
FILESTREAM 通过将 varbinary(max) 二进制大对象 (BLOB) 数据存储为文件系统上的文件,将 SQL Server 数据库引擎与 NTFS 文件系统集成。Transact-SQL 语句可以插入、更新、查询、搜索和备份 FILESTREAM 数据。Win32 文件系统接口提供对数据的流式访问。
FILESTREAM 使用 NT 系统缓存来缓存文件数据。这有助于减少 FILESTREAM 数据可能对数据库引擎性能产生的任何影响。未使用 SQL Server 缓冲池;因此,该内存可用于查询处理。
于 2013-08-16T06:11:52.393 回答
0
您可以使用如下代码将图像或任何类型的文件插入 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'
于 2013-08-16T06:50:35.050 回答