3

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

}

助けてくれてありがとう

4

2 に答える 2

10

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()は、フィールドの序数を名前で読み取るために必要です。

于 2010-12-29T16:37:46.690 に答える
0

IDataRecord.GetBytesのように使えない理由はありますか

int imageDataOrdinal = myDataRecord.GetOrdinal("ImageData");
long bytesRead = myDataRecord.GetBytes(
                     imageDataOrdinal,
                     0,
                     myClass.ImageData,
                     0
                     length
                 );
于 2010-12-29T16:38:08.763 に答える