2010-12-29 4 views
2

Ich muss ein Byte-Array aus einem Datenbankfeld mit einem IDataRecord auffüllen, und ich brauchte Hilfe, wie dies erledigt wird.Ein Blob-Feld aus der Datenbank mit IDataRecord lesen

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 

} 

Vielen Dank für jede Hilfe

Antwort

8

Sie einfach mit GetValue() Methode werfen können:

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: Die GetOrdinal() ist notwendig, um die Ordinalzahl eines Feldes nach Namen zu lesen.

1

Gibt es einen Grund, dass Sie nicht IDataRecord.GetBytes wie in

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

Bitte erläutern Sie, wie man den Wert des Längenparameter verwenden können –

Verwandte Themen