如何从SQL Server读取Blob?

Kli*_*Max 0 c# sql-server

我有一个带有varbinary列的表:

My table {
   Id int primary key,
   FileBody varbinary(max)     
}
Run Code Online (Sandbox Code Playgroud)

现在,我要阅读它。很简单,我可以在此答案中使用类似的代码,但是它将转换varbinarybyte[],所以我想避免使用它。

是否有可能把varbinaryMemoryStream不转换为byte[]

dvh*_*vhh 5

您可以使用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);
Run Code Online (Sandbox Code Playgroud)

使用GetSqlBytes

 SqlCommand command = new SqlCommand( .... );
 ...
 SqlDataReader sqlReader = command.ExecuteReader(CommandBehavior.SequentialAccess);
 byte[] outbyte = sqlReader.GetSqlBytes(1).Buffer;
Run Code Online (Sandbox Code Playgroud)


nto*_*ohl 5

我相信您正在搜索:

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

GetStream方法:

检索二进制,图像,varbinary,UDT和变量数据类型为Stream。