2013-05-21 30 views
0

我有一個客戶要求我將jpeg文件導入到他們的SQL Server數據庫中。將jpeg圖像寫入SQL Server 2000樣式TEXT字段

問題是他們的數據庫供應商最初在SQL Server 2000(或更早版本)中構建產品,儘管他們的數據庫當前位於SQL Server 2008 R2實例中。看起來他們的舊數據看起來像是剛剛被轉移到數據類型爲text的大字段中。

是否可以將jpeg文件讀入MemoryStream,然後直接寫入SQL Server數據庫?如果是這樣,我將如何去做這件事?或者,還有更好的方法?

感謝,

安德烈

+0

您可以先閱讀:http://stackoverflow.com/questions/3748/storing-images-in-db -yea-or-nay – 2power10

+0

更好的方法:將該列轉換爲VARBINARY(MAX) - 畢竟,圖片是**二進制**數據,而不是文本...... –

回答

0

我想,如果你真的需要做到這一點,你可以建立字節流進像這樣的字符串:

 MemoryStream ms = [your stream]; 
     Byte[] memoryBytes = ms.ToArray(); 
     StringBuilder sBuilder = new StringBuilder(); 

     foreach(byte nextByte in memoryBytes) 
      sBuilder.Append((char)nextByte); 

     string res = sBuilder.ToString(); 

然後通過傳遞字符串時,它存儲在數據庫中。您應該儘量通過提供更新其數據庫結構來嘗試從客戶端獲得額外的工作;)

+0

感謝您的協助。我會在今天下午嘗試這個,並告訴你它是否有效。乾杯!安德烈 –

1

這是很不划算的,也沒有效率將照片存儲在數據庫中你最好的辦法是把路徑存儲到文件中。

+0

Hector,雖然我碰巧同意和你在一起,如果我是一個全新解決方案的架構師,我肯定會選擇鏈接而不是嵌入。不過,我的要求是使用預構建的應用程序,並將jpeg文件的原始內容寫入TEXT數據類型,而不是將批量加載的COLUMNSTORE寫入varchar(max)數據類型。這就是說,他們用C#中的任何方式將unicode流的原始內容直接寫入數據庫? –