使用 IDataRecord 从数据库中读取 blob 字段

Posted

技术标签:

【中文标题】使用 IDataRecord 从数据库中读取 blob 字段【英文标题】:Reading a blob field from database using IDataRecord 【发布时间】:2010-12-29 16:33:49 【问题描述】:

我需要使用 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


感谢您的帮助

【问题讨论】:

【参考方案1】:

您可以简单地使用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() 是按名称读取字段序号所必需的。

【讨论】:

【参考方案2】:

是否有某些原因导致您不能像在中那样使用IDataRecord.GetBytes

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

【讨论】:

请说明如何设置length参数的值

以上是关于使用 IDataRecord 从数据库中读取 blob 字段的主要内容,如果未能解决你的问题,请参考以下文章

从google api Fitness playground读取血压和血糖数据源

36.从汇编到C(bl1到bl2)

二合一电调怎么刷bl

如何使用来自客户端 C# Winforms 的 asmx 服务 (BL) 的类函数

在 C# 中将 SQL Datareader 转换为数据集

汇编语言