C# 如何从SQL Server读取blob?
我有一个带有varbinary列的表:C# 如何从SQL Server读取blob?,c#,sql-server,C#,Sql Server,我有一个带有varbinary列的表: My table { Id int primary key, FileBody varbinary(max) } 现在我想读它。很简单,我可以使用这样的代码,但它将varbinary转换为byte[],我想避免使用它 是否可以将varbinary放入MemoryStream而不转换为字节[]?用户可以从列中读取数据或使用或 例如: 使用getBytes SqlCommand command = new SqlCommand( ..
My table {
Id int primary key,
FileBody varbinary(max)
}
现在我想读它。很简单,我可以使用这样的代码,但它将varbinary
转换为byte[]
,我想避免使用它
是否可以将varbinary
放入MemoryStream
而不转换为字节[]
?用户可以从列中读取数据或使用或
例如:
使用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
方法:
以流的形式检索二进制、image、varbinary、UDT和variant数据类型
没有转换,可以将其看作是将数据从sql server移动到memorystream的缓冲区。为了节省内存,你可以使用更小的缓冲区。你可以这样做
newmemorystream(myByteArray)
它看起来很不错。我想这就是我要找的,谢谢!