OracleLob Klasa

Definicja

Reprezentuje typ danych dużego obiektu binarnego (LOB) przechowywanego na serwerze Oracle.Represents a large object binary (LOB) data type stored on an Oracle server. Klasa ta nie może być dziedziczona.This class cannot be inherited.

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
Dziedziczenie
Implementuje

Uwagi

OracleLob różni się od OracleBFile w tym, że dane są przechowywane na serwerze, a nie w pliku fizycznym w systemie operacyjnym.An OracleLob differs from an OracleBFile in that the data is stored on the server instead of in a physical file in the operating system. Może również być obiektem do odczytu i zapisu, w przeciwieństwie do OracleBFile, który jest zawsze tylko do odczytu.It can also be a read-write object, unlike an OracleBFile, which is always read-only.

OracleLob może być jednym z tych OracleType typów danych.An OracleLob may be one of these OracleType data types.

Typ danych OracleTypeOracleType data type OpisDescription
Blob Typ danych Oracle BLOB, który zawiera dane binarne o maksymalnym rozmiarze wynoszącym 4 gigabajty (GB).An Oracle BLOB data type that contains binary data with a maximum size of 4 gigabytes (GB). To mapuje do Array typu Byte.This maps to an Array of type Byte.
Clob Typ danych programu Oracle CLOB, który zawiera dane znakowe, oparte na domyślnym zestawie znaków na serwerze z maksymalnym rozmiarem wynoszącym 4 GB.An Oracle CLOB data type that contains character data, based on the default character set on the server, with a maximum size of 4 GB. To mapowanie do String.This maps to String.
NClob Typ danych programu Oracle NCLOB, który zawiera dane znakowe, oparte na Narodowym zestawie znaków na serwerze o maksymalnym rozmiarze wynoszącym 4 GB.An Oracle NCLOB data type that contains character data, based on the national character set on the server with a maximum size of 4 GB. To mapowanie do String.This maps to String.

Deweloper aplikacji .NET może pobrać wartości LOB Oracle do podstawowych typów danych .NET, takich jak Array typu Byte i Stringlub wyspecjalizowany typ danych OracleLob.A .NET application developer can retrieve the Oracle LOB values into basic .NET data types, such as Array of type Byte and String, or the specialized OracleLob data type. Klasa OracleLob obsługuje odczytywanie danych z programu Oracle LOB i zapisywanie ich w bazie danych Oracle.The OracleLob class supports reading data from and writing to the Oracle LOB in the Oracle database.

Poniżej przedstawiono główne właściwości typu danych OracleLob, który odróżnia go od podstawowych typów danych platformy .NET:The following are the main characteristics of an OracleLob data type that distinguish it from basic .NET data types:

  • Po pobraniu wartości LOB Oracle z bazy danych programu Oracle do klasy OracleLob można zmienić LOB dane w otwartej transakcji, a zmiany zostaną odzwierciedlone bezpośrednio w bazie danych.After you retrieve the Oracle LOB value from the Oracle database into the OracleLob class, you can change the LOB data in an open transaction and your changes are directly reflected to the database. Jeśli pobierasz wartość Oracle LOB do Array typu Byte lub String i zaktualizujesz te tablice, zmiany nie zostaną odzwierciedlone w bazie danych.If you retrieve the Oracle LOB value into an Array of type Byte or String and update these arrays, your changes are not reflected to the database.

  • W przypadku używania klasy OracleLob w celu uzyskania dostępu do fragmentu wartości LOB do klienta jest przesyłany tylko ten fragment z bazy danych programu Oracle.When you use the OracleLob class to access a chunk of a LOB value, only that chunk is passed from the Oracle database to the client. W przypadku korzystania z metody GetChars w celu uzyskania dostępu do fragmentu LOB wartości cała zawartość wartości jest przesyłana z bazy danych programu Oracle do klienta.When you use the GetChars method to access a chunk of a LOB value, the entire contents of the value are passed from the Oracle database to the client.

Aby uzyskać OracleLob obiektu, wywołaj metodę GetOracleLob.To obtain an OracleLob object, call the GetOracleLob method.

Można skonstruować OracleLob, która ma wartość NULL, przy użyciu tego formatu:You can construct an OracleLob that is NULL using this format:

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

Ta technika jest używana głównie do testowania, czy LOB zwrócone z serwera ma wartość NULL, co ilustruje poniższy przykład:This technique is used primarily to test whether a LOB returned from the server is NULL, as this example illustrates:

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

LOB o wartości NULL zachowuje się podobnie do zera LOB w tym, że Read się powiedzie i zawsze zwróci zero bajtów.A NULL LOB behaves similarly to a zero-byte LOB in that Read succeeds and always returns zero bytes.

Wybór kolumny LOB, która zawiera wartość null, zwraca Null.Selecting a LOB column that contains a null value returns Null.

Przed uzyskaniem tymczasowej LOBnależy rozpocząć transakcję.You must begin a transaction before obtaining a temporary LOB. W przeciwnym razie OracleDataReader może nie powieść się później.Otherwise, the OracleDataReader may fail to obtain data later.

Możesz również otworzyć tymczasowy LOB w programie Oracle, wywołując DBMS_LOB. Procedura składowana procedury składowanej systemu i powiązania LOB parametr wyjściowy.You can also open a temporary LOB in Oracle by calling the DBMS_LOB.CREATETEMPORARY system stored procedure and binding a LOB output parameter. Po stronie klienta LOB tymczasowy zachowuje się jak LOBoparte na tabeli.On the client side, a temporary LOB behaves like a table-based LOB. Na przykład, aby zaktualizować tymczasowy LOB, musi być ujęty w transakcji.For example, to update the temporary LOB, it must be enclosed in a transaction.

Poniższy przykład ilustruje sposób otwierania tymczasowego LOB:The following example demonstrates how to open a temporary 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(); 

Uwaga

Dziedziczona Metoda WriteByte kończy się niepowodzeniem, jeśli jest używana z danymi znakowymi i zostanie zgłoszony InvalidOperationException.The inherited WriteByte method fails if used with character data, and an InvalidOperationException is thrown. Zamiast tego użyj metody Write.Use the Write method instead.

Tymczasowe LOBs są zamykane tylko wtedy, gdy połączenie jest zamknięte, ale z buforowaniem i obciążeniem tymczasowy LOBs nie jest zamykany.Temporary LOBs are only closed when the connection is closed, but with pooling and under load, temporary LOBs do not close. Można rozwiązać ten problem, usuwając tymczasowy LOB, wywołując tempLob.Dispose().This can be resolved by disposing the temporary LOB, by invoking tempLob.Dispose().

Pola

Null

Reprezentuje obiekt OracleLob o wartości null.Represents a null OracleLob object.

Właściwości

CanRead

Pobiera wartość wskazującą, czy LOB można odczytać strumienia.Gets a value indicating whether the LOB stream can be read.

CanSeek

Pobiera wartość wskazującą, czy można wykonywać operacje wyszukiwania do przodu i do tyłu.Gets a value indicating whether forward and backward seek operations can be performed.

CanTimeout

Pobiera wartość określającą, czy bieżący strumień może przekroczyć limit czasu.Gets a value that determines whether the current stream can time out.

(Odziedziczone po Stream)
CanWrite

Zawsze zwraca wartość true, niezależnie od tego, czy LOB obsługuje pisać czy nie.Always returns true, regardless of whether the LOB supports writing or not.

ChunkSize

Pobiera wartość wskazującą minimalną liczbę bajtów do pobrania lub wysłania do serwera podczas operacji odczytu/zapisu.Gets a value indicating the minimum number of bytes to retrieve from or send to the server during a read/write operation.

Connection

Pobiera OracleConnection używany przez to wystąpienie OracleLob.Gets the OracleConnection used by this instance of the OracleLob.

IsBatched

Pobiera wartość wskazującą, czy aplikacja nazywa metodę BeginBatch().Gets a value indicating whether an application called the BeginBatch() method.

IsNull

Pobiera wartość wskazującą, czy OracleLob jest strumieniem Null.Gets a value that indicates whether the OracleLob is a Null stream.

IsTemporary

Pobiera wartość wskazującą, czy OracleLob jest LOBtymczasowym.Gets a value indicating whether the OracleLob is a temporary LOB.

Length

Pobiera wartość, która zwraca rozmiar OracleLob.Gets a value that returns the size of the OracleLob.

LobType

Pobiera wartość, która zwraca LOB typ danych.Gets a value that returns the LOB data type.

Position

Pobiera bieżącą pozycję odczytu w strumieniu OracleLob.Gets the current read position in the OracleLob stream.

ReadTimeout

Pobiera lub ustawia wartość (w milisekundach), która określa, jak długo strumień będzie próbować odczytać przed upływem limitu czasu.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Odziedziczone po Stream)
Value

Pobiera równoważną wartość strumienia środowiska uruchomieniowego języka wspólnego z wartości źródłowej.Gets the common language runtime stream value equivalent of the underlying value.

WriteTimeout

Pobiera lub ustawia wartość (w milisekundach), która określa, jak długo strumień podejmie próbę zapisu przed upływem limitu czasu.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Odziedziczone po Stream)

Metody

Append(OracleLob)

Dołącza dane z określonego LOB do bieżącego LOB.Appends data from the specified LOB to the current LOB.

BeginBatch()

Zapobiega wyzwalaniu wyzwalania po stronie serwera podczas wykonywania wielu operacji odczytu.Prevents server-side triggers from firing while performing multiple read operations.

BeginBatch(OracleLobOpenMode)

Zapobiega wyzwalaniu wyzwalania po stronie serwera podczas wykonywania wielu operacji odczytu i zapisu w określonym trybie dostępu.Prevents server-side triggers from firing while performing multiple read and write operations in the specified access mode.

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

Rozpoczęcie asynchronicznej operacji odczytu.Begins an asynchronous read operation. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast).(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Odziedziczone po Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Rozpoczyna asynchroniczne operacje zapisu.Begins an asynchronous write operation. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast).(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Odziedziczone po Stream)
Clone()

Tworzy nowy obiekt OracleLob, który odwołuje się do tego samego LOB Oracle, co oryginalny obiekt OracleLob.Creates a new OracleLob object that references the same Oracle LOB as the original OracleLob object.

Close()

Zamyka bieżący strumień i zwalnia zasoby skojarzone ze strumieniem.Closes the current stream and releases resources that are associated with the stream.

CopyTo(Int64, OracleLob, Int64, Int64)

Kopie z tego OracleLob do OracleLob docelowego z określoną ilością danych i przesunięciem źródłowym.Copies from this OracleLob to a destination OracleLob with the specified amount of data, and the source offset.

CopyTo(OracleLob)

Kopiuje z tej OracleLob do OracleLobdocelowej.Copies from this OracleLob to a destination OracleLob.

CopyTo(OracleLob, Int64)

Kopie z tego OracleLob do OracleLob docelowego z określoną ilością danych.Copies from this OracleLob to a destination OracleLob with the specified amount of data.

CopyTo(Stream)

Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu.Reads the bytes from the current stream and writes them to another stream.

(Odziedziczone po Stream)
CopyTo(Stream, Int32)

Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Odziedziczone po Stream)
CopyToAsync(Stream)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Odziedziczone po Stream)
CopyToAsync(Stream, CancellationToken)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego tokenu anulowania.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Odziedziczone po Stream)
CopyToAsync(Stream, Int32)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Odziedziczone po Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu i tokenu anulowania.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(Odziedziczone po Stream)
CreateObjRef(Type)

Tworzy obiekt, który zawiera wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikacji z obiektem zdalnym.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Odziedziczone po MarshalByRefObject)
CreateWaitHandle()

Przydziela obiekt WaitHandle.Allocates a WaitHandle object.

(Odziedziczone po Stream)
Dispose()

Zwalnia zasoby używane przez ten obiekt.Releases the resources that are used by this object.

Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element Stream i opcjonalnie zwalnia zasoby zarządzane.Releases the unmanaged resources used by the Stream and optionally releases the managed resources.

(Odziedziczone po Stream)
DisposeAsync()

Asynchronicznie zwalnia niezarządzane zasoby używane przez Stream.Asynchronously releases the unmanaged resources used by the Stream.

(Odziedziczone po Stream)
EndBatch()

Umożliwia wyzwalaczom po stronie serwera wznowienie uruchamiania po wykonaniu wielu operacji zapisu.Allows server-side triggers to resume firing after performing multiple write operations.

EndRead(IAsyncResult)

Czeka na zakończenie oczekujących asynchronicznych operacji odczytu.Waits for the pending asynchronous read to complete. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast).(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Odziedziczone po Stream)
EndWrite(IAsyncResult)

Zamyka asynchroniczne operacje zapisu.Ends an asynchronous write operation. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast).(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Odziedziczone po Stream)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
Erase()

Kasuje wszystkie dane z tego OracleLob.Erases all data from this OracleLob.

Erase(Int64, Int64)

Wymazuje określoną ilość danych z tego OracleLob.Erases the specified amount of data from this OracleLob.

Flush()

Obecnie nie jest obsługiwane.Not currently supported.

FlushAsync()

Asynchronicznie czyści wszystkie bufory dla tego strumienia i powoduje, że wszystkie buforowane dane są zapisywane na podstawowym urządzeniu.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Odziedziczone po Stream)
FlushAsync(CancellationToken)

Asynchronicznie czyści wszystkie bufory dla tego strumienia, powoduje, że wszystkie buforowane dane są zapisywane na podstawowym urządzeniu i monitoruje żądania anulowania.Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

(Odziedziczone po Stream)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetLifetimeService()

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Odziedziczone po MarshalByRefObject)
GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
InitializeLifetimeService()

Uzyskuje obiekt usługi istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.Obtains a lifetime service object to control the lifetime policy for this instance.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy skróconą kopię bieżącego obiektu MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Odziedziczone po MarshalByRefObject)
ObjectInvariant()

Zapewnia pomoc techniczną dla Contract.Provides support for a Contract.

(Odziedziczone po Stream)
Read(Byte[], Int32, Int32)

Odczytuje sekwencję bajtów z bieżącego strumienia OracleLob i przesuwa pozycję w strumieniu o liczbę odczytanych bajtów.Reads a sequence of bytes from the current OracleLob stream and advances the position within the stream by the number of bytes read.

Read(Span<Byte>)

Gdy jest zastępowany w klasie pochodnej, odczytuje sekwencję bajtów z bieżącego strumienia i przesuwa pozycję w strumieniu o liczbę odczytanych bajtów.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Odziedziczone po Stream)
ReadAsync(Byte[], Int32, Int32)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i przesuwa pozycję w strumieniu o liczbę odczytanych bajtów.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Odziedziczone po Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, przesuwa pozycję w strumieniu o liczbę odczytanych bajtów i monitoruje żądania anulowania.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(Odziedziczone po Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, przesuwa pozycję w strumieniu o liczbę odczytanych bajtów i monitoruje żądania anulowania.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(Odziedziczone po Stream)
ReadByte()

Odczytuje bajt ze strumienia i przesuwa pozycję w strumieniu o jeden bajt lub zwraca wartość-1, jeśli na końcu strumienia.Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.

(Odziedziczone po Stream)
Seek(Int64, SeekOrigin)

Ustawia pozycję na bieżącym strumieniu OracleLob.Sets the position on the current OracleLob stream.

SetLength(Int64)

Ustawia długość strumienia OracleLob do wartości mniejszej niż bieżąca długość.Sets the length of the OracleLob stream to a value less than the current length.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)
Write(Byte[], Int32, Int32)

Zapisuje sekwencję bajtów do bieżącego strumienia OracleLob i postępuje bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów.Writes a sequence of bytes to the current OracleLob stream, and advances the current position within this stream by the number of bytes written.

Write(ReadOnlySpan<Byte>)

Gdy jest zastępowany w klasie pochodnej, zapisuje sekwencję bajtów do bieżącego strumienia i zwiększa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów.When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Odziedziczone po Stream)
WriteAsync(Byte[], Int32, Int32)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia i przesuwa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Odziedziczone po Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przesuwa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów i monitoruje żądania anulowania.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

(Odziedziczone po Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przesuwa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów i monitoruje żądania anulowania.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

(Odziedziczone po Stream)
WriteByte(Byte)

Zapisuje bajty w bieżącym położeniu w strumieniu OracleLob i przesuwa pozycję w strumieniu o jeden bajt.Writes a byte to the current position in the OracleLob stream, and advances the position within the stream by one byte.

Jawne implementacje interfejsu

IDisposable.Dispose()

Zwalnia wszelkie zasoby używane przez element Stream.Releases all resources used by the Stream.

(Odziedziczone po Stream)

Dotyczy