查询SQL图像数据类型并输出到字符串

时间:2016-12-16 23:57:11

标签: c# sql

我正在编写代码以将SQL表(包含2个text / int字段和图像类型字段)导出到csv文件。一切正常,除了我无法将图像文件成功写入字符串。以下是此部分的当前代码:

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的byte []的结果是:

1,ChatLog立即开会2016_12_13 12_26.pdf,System.Byte []

  

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

但是我只是得到“System.Byte []”

而不是真正的文件内容

在执行单个sql查询并将第3列转换为字符串时,我得到相同的结果。我需要(并且期望)我在sql查询中看到的127,000个字符。相反,我只是得到“System.Byte []”

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

您需要将byte[]转换为字符串

  

string foo = Encoding.ASCII.GetString(DocPDF);

然后将其写入CSV

  

CSVText.AppendLine(DocRow +“,”+ foo);

答案 1 :(得分:0)

不深入查看代码 - 假设DocPDF包含一个字节数组,并且您正在写入文本文件..将数据转换为Base64。

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