Чтение поля BLOB-объекта из базы данных с использованием IDataRecord - PullRequest
2 голосов
/ 29 декабря 2010

Мне нужно заполнить массив байтов из поля базы данных, используя IDataRecord, и мне нужна помощь, как это сделать.

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

// Уровень данных

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

}

Спасибо за любую помощь

Ответы [ 2 ]

8 голосов
/ 29 декабря 2010

Вы можете просто привести, используя GetValue () метод:

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);
}

РЕДАКТИРОВАТЬ: GetOrdinal () необходим для чтения порядкового номера поляпо имени.

1 голос
/ 29 декабря 2010

Есть ли причина, по которой вы не можете использовать IDataRecord.GetBytes, как в

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