This document is archived and information here might be outdated.  Recommended version.


Write Blob File Contents To Table Row Field Snippet (ArcObjects .NET 10.4 SDK)
ArcObjects Library Reference

Write Blob File Contents To Table Row Field Snippet

Read the contents of a binary file and write to a Blob field in a new row of a table.

[C#]
/// <summary>
/// Read the contents of a binary file and write to a Blob field in a new row of a table.
/// </summary>
/// <param name="string_Filename">A System.String that is the name of a binary file to read. Example: "C:\temp\myPicture.bmp"</param>
/// <param name="table">An ITable interface that is the table is to have a new row added and have a specified BLOB field populated.</param>
/// <param name="int32_BlobFieldIndex">A System.Int32 that is the index number of the Blob field in the Fields collection of the Table. Example: 3</param>
/// <returns>True=successful. False=unscucceeful.</returns>
/// <remarks></remarks>
public System.Boolean WriteBlobFileContentsToTableRowField(System.String string_Filename, ESRI.ArcGIS.Geodatabase.ITable table, System.Int32 int32_BlobFieldIndex)
{

    try
    {
        //Read the Blob (binary) stream from a file.
        ESRI.ArcGIS.esriSystem.IMemoryBlobStream memoryBlobStream=new ESRI.ArcGIS.esriSystem.MemoryBlobStreamClass();
        memoryBlobStream.LoadFromFile(string_Filename);

        //Add a new row to the table
        ESRI.ArcGIS.Geodatabase.IRow row=table.CreateRow();

        //Get the Blob Field from the Table.
        ESRI.ArcGIS.Geodatabase.IFields fields=row.Fields;
        ESRI.ArcGIS.Geodatabase.IField field=fields.get_Field(int32_BlobFieldIndex);

        //Test to ensure the index number specified is a Blob Field
        if (field.Type == ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeBlob)
        {

            //Write the Blob (binary) stream to the Blob Field and save
            row.set_Value(int32_BlobFieldIndex, (System.Object)memoryBlobStream);
            //row.get_Value(int32_BlobFieldIndex)=memoryBlobStream;
            row.Store();

            //success
            return true;

        }
        else
        {

            //unsuccessful
            return false;

        }
    }
    catch (System.Exception ex)
    {

        //unsuccessful with error, interrogate more
        return false;

    }

}

[Visual Basic .NET]
''' <summary>
''' Read the contents of a binary file and write to a Blob field in a new row of a table.
''' </summary>
''' <param name="string_Filename">A System.String that is the name of a binary file to read. Example: "C:\temp\myPicture.bmp"</param>
''' <param name="table">An ITable interface that is the table is to have a new row added and have a specified BLOB field populated.</param>
''' <param name="int32_BlobFieldIndex">A System.Int32 that is the index number of the Blob field in the Fields collection of the Table. Example: 3</param>
''' <returns>True=successful. False=unscucceeful.</returns>
''' <remarks></remarks>
Public Function WriteBlobFileContentsToTableRowField(ByVal string_Filename As System.String, ByVal table As ESRI.ArcGIS.Geodatabase.ITable, ByVal int32_BlobFieldIndex As System.Int32) As System.Boolean

  Try
    'Read the Blob (binary) stream from a file.
    Dim memoryBlobStream As ESRI.ArcGIS.esriSystem.IMemoryBlobStream=New ESRI.ArcGIS.esriSystem.MemoryBlobStreamClass
    memoryBlobStream.LoadFromFile(string_Filename)

    'Add a new row to the table
    Dim row As ESRI.ArcGIS.Geodatabase.IRow=table.CreateRow

    'Get the Blob Field from the Table.
    Dim fields As ESRI.ArcGIS.Geodatabase.IFields=row.Fields
    Dim field As ESRI.ArcGIS.Geodatabase.IField=fields.Field(int32_BlobFieldIndex)

    'Test to ensure the index number specified is a Blob Field
    If field.Type=ESRI.ArcGIS.Geodatabase.esriFieldType.esriFieldTypeBlob Then

      'Write the Blob (binary) stream to the Blob Field and save
      row.Value(int32_BlobFieldIndex)=CType(memoryBlobStream, System.Object) ' Explicit Cast
      row.Store()

      'success
      Return True

    Else

      'unsuccessful
      Return False

    End If
  Catch ex As System.Exception

    'unsuccessful with error, interrogate more
    Return False

  End Try

End Function

Additional Requirements
  • The code in this document requires the following References added to the Visual Studio project:
  • ESRI.ArcGIS.Geodatabase
  • ESRI.ArcGIS.System
  • System