Udostępnij za pośrednictwem


Metoda PipelineBuffer.GetBlobData

Pobiera tablicę bajtów z duży obiekt binarny (BLOB) przechowywane w PipelineBuffer kolumna.

Przestrzeń nazw:  Microsoft.SqlServer.Dts.Pipeline
Zestaw:  Microsoft.SqlServer.PipelineHost (w Microsoft.SqlServer.PipelineHost.dll)

Składnia

'Deklaracja
Public Function GetBlobData ( _
    columnIndex As Integer, _
    offset As Integer, _
    count As Integer _
) As Byte()
'Użycie
Dim instance As PipelineBuffer
Dim columnIndex As Integer
Dim offset As Integer
Dim count As Integer
Dim returnValue As Byte()

returnValue = instance.GetBlobData(columnIndex, _
    offset, count)
public byte[] GetBlobData(
    int columnIndex,
    int offset,
    int count
)
public:
array<unsigned char>^ GetBlobData(
    int columnIndex, 
    int offset, 
    int count
)
member GetBlobData : 
        columnIndex:int * 
        offset:int * 
        count:int -> byte[] 
public function GetBlobData(
    columnIndex : int, 
    offset : int, 
    count : int
) : byte[]

Parametry

  • columnIndex
    Typ: System.Int32
    Indeks kolumna zawierającą obiektu BLOB.
  • offset
    Typ: System.Int32
    Punkt w obiekcie BLOB, aby rozpocząć pobieranie bajtów z obiektu BLOB.
  • count
    Typ: System.Int32
    Liczba bajtów, aby pobrać obiektu BLOB.

Wartość zwracana

Typ: array<System.Byte[]
Tablica bajtów w PipelineBuffer kolumna.

Uwagi

Metoda ta działa z następującymi Integration Services typy danych:

Podczas pobierania danych z PipelineBuffer kolumny zawierającej obiekt BLOB, takich jak DT_IMAGE, określ lokalizację początkową w obiekcie BLOB z offset parametr i liczba bajtów przeznaczonych do pobrania w count parametru.

Pełną listę Integration Services typów danych i odpowiadających im uzyskać i ustawić metody PipelineBuffer klasy za pomocą każdego typu, zobacz Praca z typami danych w przepływu danych.

Przykłady

Poniższy przykład pobiera całą tablicę bajtów z PipelineBuffer kolumna.

public override void ProcessInput(int inputID, PipelineBuffer buffer)
{
   IDTSInput100 input = ComponentMetaData.InputCollection.GetObjectByID(inputID);

   foreach (IDTSInputColumn100 col in input.InputColumnCollection)
   {
      int index = BufferManager.FindColumnByLineageID(input.Buffer, col.LineageID);
      BufferColumn bc = buffer.GetColumnInfo(index);

      if (bc.DataType == DataType.DT_IMAGE)
      {
         uint blobLength =  buffer.GetBlobLength(index);
         byte [] blobBytes = buffer.GetBlobData(index, 0, (int)blobLength);

         //TODO: Do something with the blob data.

      }
   }
}
Public  Overrides Sub ProcessInput(ByVal inputID As Integer, ByVal buffer As PipelineBuffer) 
 Dim input As IDTSInput100 = ComponentMetaData.InputCollection.GetObjectByID(inputID) 
 For Each col As IDTSInputColumn100 In input.InputColumnCollection 
   Dim index As Integer = BufferManager.FindColumnByLineageID(input.Buffer, col.LineageID) 
   Dim bc As BufferColumn = buffer.GetColumnInfo(index) 
   If bc.DataType = DataType.DT_IMAGE Then 
     Dim blobLength As System.UInt32 = buffer.GetBlobLength(index) 
     Dim blobBytes As Byte() = buffer.GetBlobData(index, 0, CType(blobLength, Integer)) 
     'TODO: Do something with the blob data
   End If 
 Next 
End Sub