从数据表中分配二进制数据

Sta*_*ver 4 c# c#-4.0

我想将二进制数据从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());
}
Run Code Online (Sandbox Code Playgroud)

如何从StackOverflow表中获取binaryData?

StackOverflow table 
----------------------
Id    int
BinaryData  varbinary(max)
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 5

如果你打电话.ToString(),你会得到一个字符串 ; 相反,简单地施放:

byteArray = (byte[])dataTable.Rows[0]["BinaryData"];
Run Code Online (Sandbox Code Playgroud)

但是,这里没有必要DataTable.就个人而言,我只是使用:

var byteArray = conn.Query<byte[]>(
    "SELECT BinaryData FROM StackOverflow WHERE Id=@id",
    new {id}).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

使用dapper,或者只ExecuteScalar使用ADO.NET:

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();
}
Run Code Online (Sandbox Code Playgroud)