Select to view content in your preferred language

Read string stored in Blob field

5143
2
09-19-2014 09:07 AM
CodyScott
Regular Contributor

Hello,

I'm posting this here in case anyone else comes across this and needs a solution to reading string data stored in blobs.

First, i understand that this isn't the best method to be storing string/long text format, but it was best for my method and i suspect i'm not the only one who will want to do this!

In my case, i was required to store large text blocks into a geodatabase and wanted to keep everything contained into one simple row per-object.

I wasn't interested in either creating multiple rows to store a max of 255 chars or storing in another DB, so based on this i was able to store all my text in a Blob format.

I was a little stumped on how to read back this information in C# (python was a breeze), and there wasn't very much help i could find online for this.

So, with that in mind, the code below (with a little massaging) should be able to return a string store in a blob to a string type in C# if anyone is stuck.

private string getBlobText(IRow row, int blobrowint)

{

     //blobrowint is the integer location of the blobfield

     ESRI.ArcGIS.esriSystem.IMemoryBlobStream2 blobText = (ESRI.ArcGIS.esriSystem.IMemoryBlobStream2)row.get_Value(blobrowint);

    

     //creates a byte object equal to the size of the blob string

     int n = (int)blobText.Size;

     byte[] blobBytes = new Byte;

     //creates a variant of the blobtext as a object

     object blobObject = null;

     (commenttxt as ESRI.ArcGIS.esriSystem.IMemoryBlobStreamVariant).ExportToVariant(out blobObject);

     //converts the blobObject to a byte

     blobBytes = (byte[])blobObject;

     //translates the bytes to string

     string res = System.Text.Encoding.UTF8.GetString(blobBytes);

}

0 Kudos
2 Replies
EricO_Neal1
Occasional Contributor

Think it should be:   (blobText as ESRI.ArcGIS.esriSystem.IMemoryBlobStreamVariant).ExportToVariant(out blobObject);  

0 Kudos
CodyScott
Regular Contributor

Eric,

Sorry that is correct. It should be blobText.

Thanks!

0 Kudos