4

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)
4

1 に答える 1

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 を使用するか、単にExecuteScalarADO.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();
}
于 2013-07-16T08:49:49.083 に答える