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