我想从DataTable
获取二进制数据到字节数组。
但是下面的代码返回
无法转换来源类型' string'定位类型' byte []'
DataTable dataTable = DB.GetData("SELECT * FROM StackOverflow WHERE Id = '" + id + "'");
byte[] byteArray = null;
if(dataTable.Rows.Count > 0)
{
byteArray = dataTable.Rows[0]["BinaryData"].ToString());
}
如何从StackOverflow表中获取binaryData?
StackOverflow table
----------------------
Id int
BinaryData varbinary(max)
答案 0 :(得分:5)
如果您致电.ToString()
,您将获取字符串;相反,简单地演员:
byteArray = (byte[])dataTable.Rows[0]["BinaryData"];
但是,这里不需要DataTable
。就个人而言,我只是使用:
var byteArray = conn.Query<byte[]>(
"SELECT BinaryData FROM StackOverflow WHERE Id=@id",
new {id}).FirstOrDefault();
使用dapper,或仅使用ADO.NET ExecuteScalar
:
byte[] byteArray;
using(var cmd = conn.CreateCommand()) {
cmd.CommandText = "SELECT BinaryData FROM StackOverflow WHERE Id=@id";
cmd.Parameters.AddWithValue("id",id);
byteArray = (byte[])cmd.ExecuteScalar();
}