OracleLob Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
LOBda base de dados Oracle para a OracleLob classe, podes alterar osLOBdados numa transação aberta e as tuas alterações são refletidas diretamente para a base de dados. Se recuperares o valor OracleLOBnum 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
LOBvalor, apenas esse bloco é passado da base de dados Oracle para o cliente. Quando usa o GetChars método para aceder a um bloco de umLOBvalor, 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 |
| 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 |
| 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 | |
| IsTemporary |
Obtém um valor que indica se o OracleLob é um temporário |
| Length |
Obtém um valor que devolve o tamanho do OracleLob. |
| LobType |
Recebe um valor que devolve o tipo de |
| 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 |
| 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 |
| 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) | |
| 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) |