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 回答