【问题标题】:How to read blob from SQL Server?如何从 SQL Server 读取 blob?
【发布时间】:2015-09-01 07:41:22
【问题描述】:

我有一个带有 varbinary 列的表:

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

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

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

【问题讨论】:

  • 没有转换,更像是一个缓冲区,将数据从sql server移动到内存流中。为了节省内存,您可以使用更小的缓冲区。
  • 你可以这样做new MemoryStream(myByteArray)

标签: c# sql-server


【解决方案1】:

您可以使用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;

【讨论】:

    【解决方案2】:

    我相信你正在寻找这个:

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

    GetStream方法:

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

    【讨论】:

    • 看起来不错。认为这是我要找的,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-08-03
    • 2019-06-28
    • 2013-11-02
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 2012-11-22
    相关资源
    最近更新 更多