2016-12-16 54 views
0

我正在編寫將一個SQL表(其中包含2個文本/ int字段和一個圖像類型字段)導出到csv文件的代碼。一切正常,除非我無法將圖像文件成功寫入字符串。這是我目前的這部分代碼:查詢SQL圖像數據類型並輸出到字符串

string selectDocRows = "SELECT ID,Name FROM Documents WHERE ID=" + DocumentID; 
SqlCommand selectFileData = new SqlCommand("SELECT FileData FROM Documents WHERE ID=" + DocumentID,SQLConnection); 
using (SqlDataAdapter DocAdapter = new SqlDataAdapter(selectDocRows, SQLConnection)) 
{ 
    using (DataTable DocTable = new DataTable("DocumentResults")) 
    { 
     DocAdapter.Fill(DocTable); 

     foreach (DataRow row in DocTable.Rows) 
     { 
      string DocRow = string.Format("{0},{1},", row[0], row[1]); 
      byte[] DocPDF = (byte[])selectFileData.ExecuteScalar() ; 
      CSVText.AppendLine(DocRow + DocPDF); 
     } 
    } 
} 

,用於返回字節[]所謂DocPDF結果是:

1,ChatLog立即開會2016_12_13 12_26.pdf,System.Byte []

3列:索引,文件名和文件內容

但不是真正的文件內容,我只是得到 「System.Byte []」

當執行單個sql查詢並將第三列轉換爲字符串時,我會得到相同的結果。我需要(也會期待)我在SQL查詢中看到的127,000個字符。相反,我只是得到「System.Byte []」

任何幫助,將不勝感激。

回答

0

您需要將byte[]轉換爲字符串

串富= Encoding.ASCII.GetString(DocPDF);

,然後寫該給CSV

CSVText.AppendLine(DocRow + 「」 +富);

0

沒有深入查看您的代碼 - 假設DocPDF包含字節數組,並且您正在寫入文本文件..將數據轉換爲Base64。

string docRow = String.Format(「{0},{1},{2}」,...,...,Convert.ToBase64String(docPDF));

相關問題