Assigning binary data from datatable

I want to get binarydata from a DataTable into an array of bytes. But the code below returns

cannot convert source type 'string' to target type '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()); } 

How can I get binaryData from a stackoverflow table?

 StackOverflow table ---------------------- Id int BinaryData varbinary(max) 
+4
source share
1 answer

If you call .ToString() , you will get a string; instead, just click:

 byteArray = (byte[])dataTable.Rows[0]["BinaryData"]; 

However, <<22> is not required here. Personally, I would just use:

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

using dapper, or just ExecuteScalar with 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(); } 
+5
source

Source: https://habr.com/ru/post/1491597/


All Articles