如何从SQL Server读取blob

本文关键字:读取 blob Server SQL | 更新日期: 2023-09-27 18:10:43

我有一个包含varbinary列的表:

My table {
   Id int primary key,
   FileBody varbinary(max)     
}

现在我想读它。这很简单,我可以在这个答案中使用类似的代码,但它将varbinary转换为byte[],我想避免它。

是否可以将varbinary放入MemoryStream而不转换为byte[] ?

如何从SQL Server读取blob

可以使用SqlDataReader.GetBytes从列中读取数据,也可以使用SqlDataReader.GetSqlBytesSqlDataReader.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;

我相信你正在寻找这个:

SqlCommand command = new SqlCommand();
SqlDataReader reader = command.ExecuteReader();
System.IO.Stream stream = reader.GetStream(1); // 1 is the index of the column

GetStream方法:

以流的形式检索二进制、图像、可变二进制、UDT和可变数据类型。