簡體   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