using(reader)
{
//Obtain the first row of data.
reader.Read();
//Obtain the LOBs (all 3 varieties).
OracleLob BLOB = reader.GetOracleLob(1);
...
//Example - Reading binary data (in chunks).
byte[] buffer = new byte[4096];
while((actual = BLOB.Read(buffer, 0, buffer.Length)) >0)
Console.WriteLine(BLOB.LobType +
".Read(" + buffer + ", " + buffer.Length + ") => " + actual);
...
}
Eu pessoalmente criaria e adicionaria colunas ao DataTable dessa maneira, mas cabe a você tentar dessa maneira ou de outra maneira que você sabe que funcionará
DataTable table = new DataTable("ImageTable"); //Create a new DataTable instance.
DataColumn column0 = new DataColumn("id"); //Create the column.
column.DataType = System.Type.GetType("System.String"); //Type string
DataColumn column1 = new DataColumn("image"); //Create the column.
column.DataType = System.Type.GetType("System.Byte[]"); //Type byte[] to store image bytes.
column.AllowDBNull = true;
column.Caption = "My Image";
table.Columns.Add(column0); //Add the column to the table.
table.Columns.Add(column1); //Add the column to the table.
Then, add a new row to this table and set the value of the MyImage column.
DataRow row = table.NewRow();
row["MyImage"] = <Image byte array>;
tables.Rows.Add(row);