How do you read a byte array from a DataRow in C#?
Asked Answered
L

1

11

I have a DataSet with a DataTable that correctly fills a single DataRow through a TableAdapter.

I am able to pull data from the DataRow with code like this:

dataFileID = (int)this.dataFileDataRow["DataFileID"];
dataFileName = (string)this.dataFileDataRow["DataFileName"];
dataFileDate = (DateTime)this.dataFileDataRow["DataFileDate"];

I have another column called DataFile of type varbinary(max).

When I try to pull that column's data from the same DataRow as above I get nothing.

byte[] fileFromDatabase = (byte[])this.dataFileDataRow["DataFile"];

If I put a break point at this location, I can look into the dataFileDataRow, look into the ItemArray property and see that the binary data is sitting at position 5 in the ItemArray.

I have tried access the ItemArray directly using its index but the byte array is not being copied to the fileFromDatabase variable.

I have also noticed that adding fileFromDatabase to my watch produces this error:

"The name 'fileFromDatabase' does not exist in the current context"

The execution is still in the same block as the definition of fileFromDatabase so I do not understand how it would be out of context.

I had Visual Studio's configuration set to Release instead of Debug. This was causing me to not see the real time debugging information I was looking for when trying to examine fileFromDatabase. After switching from Release to Debug, I am able to see the variable in the watch now and can verify that the code above is working correctly.

Long answered 12/11, 2008 at 19:17 Comment(1)
Please specify what language you are working in.Afterguard
L
5

The code above works, make sure you set your debugger to compile for Debug, NOT Release.

Keith

Long answered 12/11, 2008 at 19:49 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.