zSynopsis
zSynopsis

Reputation: 4854

Reading a blob field from database using IDataRecord

I need to populate a byte array from a database field using an IDataRecord and i needed help on how to get this done.

public class MyClass
{
   public string Name {get;set;}
   public byte[] ImageData { get; set;}
}

// Data Layer

public MyClass Populate(IDataRecord dr)
{
   var myClass = new MyClass();
   myClass.Name = myDataRecord.GetString(myDataRecord.GetOrdinal("NAME"));
   myClass.ImageData = // Need info on how to load this

}

Thanks for any help

Upvotes: 3

Views: 1747

Answers (2)

user432219
user432219

Reputation:

You can simply cast by using GetValue() method:

public MyClass Populate(IDataRecord dr)
{
   var myClass = new MyClass();

   int ordinal1 = myDataRecord.GetOrdinal("NAME");
   int ordinal2 = myDataRecord.GetOrdinal("IMAGEDATA");

   myClass.Name = myDataRecord.GetString(ordinal1);
   myClass.ImageData = (byte[])myDataRecord.GetValue(ordinal2);
}

EDIT: The GetOrdinal() is necessary for reading the ordinal of a field by name.

Upvotes: 10

jason
jason

Reputation: 241591

Is there some reason that you can't use IDataRecord.GetBytes as in

int imageDataOrdinal = myDataRecord.GetOrdinal("ImageData");
long bytesRead = myDataRecord.GetBytes(
                     imageDataOrdinal,
                     0,
                     myClass.ImageData,
                     0
                     length
                 );

Upvotes: 0

Related Questions