0

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

4

2 回答 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 回答