Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Recuperar imagem do Oracle DB


Não tenho certeza do que lretorno.Load(...) está fazendo para ler os dados, mas este exemplo de código sudo usando uma instrução select pode ajudá-lo... Sempre tive que obter especificamente o blob e lê-lo para obter os bytes no passado.

Exemplo para recuperar um LONG RAW Tipo de dados
var imgCmd = new OracleCommand("SELECT photo FROM photos WHERE photo_id = 1", _con);
imgCmd.InitialLONGFetchSize = -1; // Retrieve the entire image during select instead of possible two round trips to DB
var reader = imgCmd.ExecuteReader();
if (reader.Read()) {
    // Fetch the LONG RAW
    OracleBinary imgBinary = reader.GetOracleBinary(0);
    // Get the bytes from the binary obj
    byte[] imgBytes = imgBinary.IsNull ? null : imgBinary.Value;
}
reader.Close();

Exemplo para recuperar um BLOB Tipo de dados
var imgCmd = new OracleCommand("SELECT photo FROM photos WHERE photo_id = 1", _con);
var reader = imgCmd.ExecuteReader();
if (reader.Read()) {
    // Fetch the blob
    OracleBlob imgBlob = reader.GetOracleBlob(0);
    // Create byte array to read the blob into
    byte[] imgBytes = new byte[imgBlob.Length];
    // Read the blob into the byte array
    imgBlob.Read(imgBytes, 0, imgBlob.Length);
}
reader.Close();