我有一个带有varbinary列的表:
My table {
Id int primary key,
FileBody varbinary(max)
}
现在我想读它。很简单,我可以使用此answer中的代码,但它会将varbinary
转换为byte[]
,我想避免使用它。
是否可以将varbinary
放入MemoryStream
而不转换为byte[]
?
答案 0 :(得分:4)
您可以使用SqlDataReader.GetBytes
从列中读取数据或使用SqlDataReader.GetSqlBytes
或SqlDataReader.GetStream
示例:
使用getBytes
SqlCommand command = new SqlCommand( .... );
...
SqlDataReader sqlReader = command.ExecuteReader(CommandBehavior.SequentialAccess);
byte[] outbyte = new byte[bufferSize];
sqlReader.GetBytes(1, startIndex, outbyte, 0, bufferSize);
使用GetSqlBytes
SqlCommand command = new SqlCommand( .... );
...
SqlDataReader sqlReader = command.ExecuteReader(CommandBehavior.SequentialAccess);
byte[] outbyte = sqlReader.GetSqlBytes(1).Buffer;
答案 1 :(得分:4)
我相信你正在寻找这个:
SqlCommand command = new SqlCommand();
SqlDataReader reader = command.ExecuteReader();
System.IO.Stream stream = reader.GetStream(1); // 1 is the index of the column
GetStream方法:
将Stream,image,varbinary,UDT和variant数据类型检索为Stream。