Retrieve varbinary(MAX) from SQL Server to byte[] in C#
26,588
Solution 1
private static byte[] getDocument(int documentId)
{
using (SqlConnection cn = new SqlConnection("..."))
using (SqlCommand cm = cn.CreateCommand())
{
cm.CommandText = @"
SELECT DocumentData
FROM Document
WHERE DocumentId = @Id";
cm.Parameters.AddWithValue("@Id", documentId);
cn.Open();
return cm.ExecuteScalar() as byte[];
}
}
Solution 2
You have to SELECT DATALENGTH(data) and data
where data is your varbinary(max)
int i=0;
long dataLen = dr.GetInt64(i++);
if (dataLen > 0)
{
Data = new byte[dataLen];
dr.GetBytes(i++, 0, Data, 0, (int)dataLen);
}
Related videos on Youtube
![ePezhman](https://i.stack.imgur.com/MV9ND.jpg?s=256&g=1)
Author by
ePezhman
Updated on February 15, 2020Comments
-
ePezhman over 4 years
I'm trying to get a
varbinary(MAX)
from SQL Server to abyte[]
variable in C#.How can I do this?
Thanks
-
Ian about 7 yearsExecute scalar returns a max of 2033 characters (msdn.microsoft.com/en-us/library/…). So this wouldn't work if your data was longer than 2033 bytes right?