2016-12-16 3 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クエリを実行してその3番目の列を文字列に変換すると、同じ結果が得られます。私はSQLクエリーに表示されている127,000文字を必要としています。代わりに、私はちょうど "System.Byte []"を取得します

助けていただければ幸いです。

答えて

0

あなたは文字列にbyte[]を変換する必要が

文字列のfoo = Encoding.ASCII.GetString(DocPDF)。次いで

とCSV

CSVText.AppendLine(DocRow + "" + FOO)にこれを書き込みます。

0

DocPDFにバイト配列が含まれており、テキストファイルに書き込むと仮定すると、データをBase64に変換します。

文字列docRow = String.Format( "{0}、{1}、{2}"、...、...、Convert.ToBase64String(docPDF));

関連する問題