2014-01-21 84 views
0

我有一個文件(它是一個zip文件)存儲在一個varbinary字段中的MSSQL DB中。我正在從DB讀取它到一個字節數組(Fisier)。在現有文本之間寫入一個字節數組到文本文件

我想創建一個文本文件,其中將包含一個可以在客戶數據庫上運行的SQL腳本並更新客戶服務器上的文件。我正在使用simmilar來更新rdlc文件,但這些文件存儲爲文本,這是二進制文件。你有什麼建議嗎?我該怎麼做?

using (FileStream fs = new FileStream(FilePath, FileMode.Create)) 
    using (StreamWriter sw = new StreamWriter(fs)) 
    { 
    sw.WriteLine("declare @NewFile varbinary(max)"); 
    sw.WriteLine("set @NewFile =Convert(varbinary(max),'"); 

    //this for loop is wrong 
    for (int i = 0; i < Fisier.Length; i++) sw.Write((char)Fisier[i]); 

    sw.WriteLine("', 2)"); 

    sw.WriteLine("exec dbo.SetFile"); 
    sw.WriteLine("@File= @NewFile ,"); 
} 

我也試過BinaryWriter,但我沒有設法解決它。

回答

0

好吧,我找到了一個解決方案(不太漂亮,但它的工作原理)。 Sql允許使用十六進制表示法定義該值,因此我將每個字節轉換爲十六進制表示形式

sw.Write("set @FisierNou = 0x"); 
for (int i = 0; i < Fisier.Length; i++) 
    sw.Write(Fisier[i].ToString("x2"));