2017-03-08 52 views
0

使用C#如何將PDF文件轉換爲SQL存儲爲SQL Server圖像數據類型?如何將PDF文件轉換爲SQL Server圖像數據類型

以下是我的SQL,我想PDF作爲模板存儲TemplateFile列

CREATE TABLE [dbo].[Templates](
    [TemplateID] [bigint] IDENTITY(1,1) NOT NULL, 
    [TemplateFile] [image] NOT NULL, 
    [LanguageId] [bigint] NOT NULL) 

我想最好的PDF存儲在SQL image列中的十六進制字符串需要

樣本輸出.. .0x255044462D312E360D25E2E3CFD30D0A36353

+0

您是否知道圖像數據類型很快將被棄用?你應該使用varbinary(MAX) – asemprini87

+0

@ asemprini87不,我沒有意識到它,謝謝你的提升,但是,因爲db已經存在了,所以我現在想保留它。 – billboard

+3

http://stackoverflow.com/a/10310197/1384539 –

回答

1

顯然有很深的誤解如何SQL-Server存儲這些數據...

二進制數據不作爲HEX字符串存儲!這只是當您看到SELECT MyBinaryColumn FROM SomeWhere的結果時向您展示的方式。

二進制數據對於讀者來說是不可理解的。它必須格式化爲可讀的字符串。

這也適用於其他數據類型也一樣,它的值在內部存儲二進制格式的:在許多情況下值你看到都不是真正的價值。與日期時間值相關的情況尤其令人擔憂,其中呈現的字符串取決於系統和文化設置。同樣的事情導致愚蠢的錯誤,如果浮點數用隱式舍入(哦!13.00000001不等於13 ...)。

今天應該將二進制數據存儲在數據類型爲VARBINARY(MAX)的列中。 IMAGE數據類型(與TEXT相同)已棄用,未來版本將不再受支持!

您可以將您的值作爲字節數組(byte[])從C#傳遞爲SqlDbType.Binary。蒂亞戈Custodio指出他的評論this answer顯示了一個例子。

相關問題