我正在编写代码以将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 []”
任何帮助都将不胜感激。
答案 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));