OracleLob Classe

Definição

Representa um grande tipo de dado binário (LOB) armazenado num servidor Oracle. Esta classe não pode ser herdada.

public ref class OracleLob sealed : System::IO::Stream, ICloneable, System::Data::SqlTypes::INullable
public sealed class OracleLob : System.IO.Stream, ICloneable, System.Data.SqlTypes.INullable
type OracleLob = class
    inherit Stream
    interface ICloneable
    interface IDisposable
    interface INullable
Public NotInheritable Class OracleLob
Inherits Stream
Implements ICloneable, INullable
Herança
Implementações

Observações

An OracleLob difere de a OracleBFile porque os dados são armazenados no servidor em vez de num ficheiro físico no sistema operativo. Também pode ser um objeto de leitura-escrita, ao contrário de um OracleBFile, que é sempre apenas leitura.

An OracleLob pode ser um destes OracleType tipos de dados.

Tipo de dados OracleType Description
Blob Um tipo de dado Oracle BLOB que contém dados binários com um tamanho máximo de 4 gigabytes (GB). Isto mapeia para um Array de tipo Byte.
Clob Um tipo de dado Oracle CLOB que contém dados de caracteres, baseados no conjunto de caracteres padrão do servidor, com um tamanho máximo de 4 GB. Isto corresponde a String.
NClob Um tipo de dado Oracle NCLOB que contém dados de caracteres, baseado no conjunto nacional de caracteres do servidor com um tamanho máximo de 4 GB. Isto corresponde a String.

Um programador de aplicações .NET pode recuperar os valores Oracle LOB em tipos básicos de dados .NET, como Array do tipo Byte e String, ou o tipo de dado especializado OracleLob. A OracleLob classe suporta a leitura de dados e a escrita para o Oracle LOB na base de dados Oracle.

As seguintes são as principais características de um tipo de dado OracleLob que o distinguem dos tipos básicos de dados .NET:

  • Depois de recuperares o valor Oracle LOB da base de dados Oracle para a OracleLob classe, podes alterar os LOB dados numa transação aberta e as tuas alterações são refletidas diretamente para a base de dados. Se recuperares o valor Oracle LOB num Array tipo Byte de ou String atualizares esses arrays, as tuas alterações não são refletidas na base de dados.

  • Quando usas a OracleLob classe para aceder a um bloco de um LOB valor, apenas esse bloco é passado da base de dados Oracle para o cliente. Quando usa o GetChars método para aceder a um bloco de um LOB valor, todo o conteúdo do valor é passado da base de dados Oracle para o cliente.

Para obter um OracleLob objeto, chame o GetOracleLob método.

Pode construir um OracleLob que é NULL usando este formato:

OracleLob myLob = OracleLob.Null;
Dim myLob As OracleLob = OracleLob.Null

Esta técnica é usada principalmente para testar se um LOB retorno do servidor é NULL, como este exemplo ilustra:

if (myLob == OracleLob.Null)
If (myLob = OracleLob.Null) Then

Um NULL LOB comporta-se de forma semelhante a um zero-byte LOB em que Read tem sucesso e retorna sempre zero bytes.

Selecionar uma LOB coluna que contenha um valor nulo retorna Null.

Deve iniciar uma transação antes de obter uma solução temporária LOB. Caso contrário, podem OracleDataReader falhar em obter dados mais tarde.

Também pode abrir um temporário LOB no Oracle chamando o DBMS_LOB. CREATETEMPORARY stored procedure e binding a um LOB parâmetro de saída. No lado do cliente, um temporário LOB comporta-se como um baseado LOBem tabela . Por exemplo, para atualizar o temporário LOB, deve estar incluído numa transação.

O exemplo seguinte demonstra como abrir um temporal LOB:

var connection = new OracleConnection("server=MyServer; integrated security=yes;");
connection.Open();
OracleTransaction transaction = connection.BeginTransaction();
OracleCommand command = connection.CreateCommand();
command.Transaction = transaction;
command.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
command.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;
command.ExecuteNonQuery();
var tempLob = (OracleLob)command.Parameters[0].Value;
var tempbuff = new byte[10000];
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(tempbuff,0,tempbuff.Length);
tempLob.EndBatch();
command.Parameters.Clear();
command.CommandText = "MyTable.MyProc";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new OracleParameter("ImportDoc", OracleType.Blob)).Value = tempLob;
command.ExecuteNonQuery();
transaction.Commit();
connection.Close();

Note

O método herdado WriteByte falha se usado com dados de caracteres, e um InvalidOperationException é lançado. Use o Write método em vez disso.

Os s temporários LOBsó são fechados quando a ligação está fechada, mas com pooling e sob carga, os s temporários LOBnão fecham. Isto pode ser resolvido eliminando o temporário LOB, invocando tempLob.Dispose().

Campos

Name Description
Null

Representa um objeto nulo OracleLob .

Propriedades

Name Description
CanRead

Recebe um valor que indica se o LOB fluxo pode ser lido.

CanSeek

Recebe um valor que indica se é possível realizar operações de busca para frente e para trás.

CanTimeout

Obtém um valor que determina se o fluxo atual pode expirar.

(Herdado de Stream)
CanWrite

Retorna sempre verdadeiro, independentemente de o LOB suporte escrever ou não.

ChunkSize

Recebe um valor que indica o número mínimo de bytes a recuperar ou enviar para o servidor durante uma operação de leitura/escrita.

Connection

Obtém o OracleConnection usado por esta instância do OracleLob.

IsBatched

Recebe um valor que indica se uma aplicação chamada o BeginBatch() método.

IsNull

Obtém um valor que indica se é OracleLob um Null fluxo.

IsTemporary

Obtém um valor que indica se o OracleLob é um temporário LOB.

Length

Obtém um valor que devolve o tamanho do OracleLob.

LobType

Recebe um valor que devolve o tipo de LOB dado.

Position

Obtém a posição atual de leitura no OracleLob fluxo.

ReadTimeout

Recebe ou define um valor, em milissegundos, que determina quanto tempo o fluxo tentará ler antes de expirar.

(Herdado de Stream)
Value

Obtém o valor do fluxo de execução em linguagem comum equivalente ao valor subjacente.

WriteTimeout

Recebe ou define um valor, em milissegundos, que determina quanto tempo o fluxo tenta escrever antes de expirar.

(Herdado de Stream)

Métodos

Name Description
Append(OracleLob)

Acrescenta dados do especificado LOB ao atual LOB.

BeginBatch()

Impede que gatilhos do lado do servidor disparem enquanto realizam múltiplas operações de leitura.

BeginBatch(OracleLobOpenMode)

Impede que os gatilhos do lado do servidor sejam acionados enquanto realizam múltiplas operações de leitura e escrita no modo de acesso especificado.

BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Inicia uma operação de leitura assíncrona. (Considere usar ReadAsync(Byte[], Int32, Int32) em vez disso.)

(Herdado de Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Inicia uma operação de escrita assíncrona. (Considere usar WriteAsync(Byte[], Int32, Int32) em vez disso.)

(Herdado de Stream)
Clone()

Cria um novo OracleLob objeto que faz referência ao mesmo Oráculo LOB do objeto original OracleLob .

Close()

Fecha o fluxo atual e liberta os recursos associados ao fluxo.

Close()

Fecha o fluxo atual e liberta quaisquer recursos (como sockets e handles de ficheiros) associados ao fluxo atual. Em vez de chamar este método, certifique-se de que o fluxo é devidamente descartado.

(Herdado de Stream)
CopyTo(Int64, OracleLob, Int64, Int64)

Cópias deste OracleLob para um destino OracleLob com a quantidade de dados especificada e o deslocamento de origem.

CopyTo(OracleLob, Int64)

Cópias deste OracleLob para um destino OracleLob com a quantidade de dados especificada.

CopyTo(OracleLob)

Cópias deste OracleLob para um destino OracleLob.

CopyTo(Stream, Int32)

Lê os bytes do fluxo atual e escreve-os noutro fluxo, usando um tamanho de buffer especificado. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyTo(Stream)

Lê os bytes do fluxo atual e escreve-os noutro fluxo. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo, usando um tamanho de buffer especificado e um token de cancelamento. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream, Int32)

Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo, usando um tamanho de buffer especificado. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CopyToAsync(Stream)

Lê assíncronamente os bytes do fluxo atual e escreve-os noutro fluxo. As posições de ambos os fluxos são avançadas pelo número de bytes copiados.

(Herdado de Stream)
CreateObjRef(Type)

Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
CreateWaitHandle()
Obsoleto.

Aloca um WaitHandle objeto.

(Herdado de Stream)
Dispose()

Liberta os recursos que são usados por este objeto.

Dispose()

Liberta todos os recursos utilizados pelo Stream.

(Herdado de Stream)
Dispose(Boolean)

Liberta os recursos não geridos usados pelo Stream e opcionalmente liberta os recursos geridos.

(Herdado de Stream)
EndBatch()

Permite que os gatilhos do lado do servidor retomem o disparo após múltiplas operações de escrita.

EndRead(IAsyncResult)

Espera que a leitura assíncrona pendente seja concluída. (Considere usar ReadAsync(Byte[], Int32, Int32) em vez disso.)

(Herdado de Stream)
EndWrite(IAsyncResult)

Termina uma operação de escrita assíncrona. (Considere usar WriteAsync(Byte[], Int32, Int32) em vez disso.)

(Herdado de Stream)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Erase()

Apaga todos os dados deste OracleLob.

Erase(Int64, Int64)

Apaga a quantidade de dados especificada deste OracleLob.

Flush()

Não suportado atualmente.

FlushAsync()

Apaga assíncronamente todos os buffers deste fluxo e faz com que quaisquer dados armazenados sejam escritos no dispositivo subjacente.

(Herdado de Stream)
FlushAsync(CancellationToken)

Apaga assíncronamente todos os buffers deste fluxo, faz com que quaisquer dados armazenados sejam escritos no dispositivo subjacente e monitoriza os pedidos de cancelamento.

(Herdado de Stream)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetLifetimeService()

Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso.

(Herdado de MarshalByRefObject)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
InitializeLifetimeService()

Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso.

(Herdado de MarshalByRefObject)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto atual MarshalByRefObject .

(Herdado de MarshalByRefObject)
ObjectInvariant()
Obsoleto.

Fornece suporte para um Contract.

(Herdado de Stream)
Read(Byte[], Int32, Int32)

Lê uma sequência de bytes do fluxo atual OracleLob e avança a posição dentro do fluxo pelo número de bytes lidos.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

A leitura assíncrona uma sequência de bytes do fluxo atual, avança a posição dentro do fluxo pelo número de bytes lidos e monitoriza pedidos de cancelamento.

(Herdado de Stream)
ReadAsync(Byte[], Int32, Int32)

A leitura assíncrona uma sequência de bytes do fluxo atual e avança a posição dentro do fluxo pelo número de bytes lidos.

(Herdado de Stream)
ReadByte()

Lê um byte do fluxo e avança a posição dentro do fluxo em um byte, ou devolve -1 se estiver no final do fluxo.

(Herdado de Stream)
Seek(Int64, SeekOrigin)

Define a posição no fluxo atual OracleLob .

SetLength(Int64)

Define o comprimento do OracleLob fluxo para um valor inferior ao comprimento atual.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
Write(Byte[], Int32, Int32)

Escreve uma sequência de bytes no fluxo atual OracleLob e avança a posição atual dentro desse fluxo pelo número de bytes escritos.

WriteAsync(Byte[], Int32, Int32, CancellationToken)

Escreve assíncronamente uma sequência de bytes no fluxo atual, avança a posição atual dentro deste fluxo pelo número de bytes escritos e monitoriza pedidos de cancelamento.

(Herdado de Stream)
WriteAsync(Byte[], Int32, Int32)

Escreve assíncronamente uma sequência de bytes no fluxo atual e avança a posição atual dentro desse fluxo pelo número de bytes escritos.

(Herdado de Stream)
WriteByte(Byte)

Escreve um byte na posição atual no OracleLob fluxo e avança a posição dentro do fluxo em um byte.

WriteByte(Byte)

Escreve um byte na posição atual no fluxo e avança a posição dentro do fluxo em um byte.

(Herdado de Stream)

Implementações de Interface Explícita

Name Description
IDisposable.Dispose()

Liberta todos os recursos utilizados pelo Stream.

(Herdado de Stream)

Aplica-se a