[英]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.