OracleLob Klasa

Definicja

Reprezentuje duży typ danych binarnych obiektów (LOB) przechowywany na serwerze Oracle. Klasa ta nie może być dziedziczona.

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

Element OracleLob różni się od OracleBFile elementu w tym, że dane są przechowywane na serwerze, a nie w pliku fizycznym w systemie operacyjnym. Może to być również obiekt odczytu i zapisu, w przeciwieństwie do OracleBFileobiektu , który jest zawsze tylko do odczytu.

Może OracleLob to być jeden z tych OracleType typów danych.

Typ danych OracleType Opis
Blob Typ danych Oracle BLOB zawierający dane binarne o maksymalnym rozmiarze 4 gigabajtów (GB). To mapuje na Array typ Byte.
Clob Typ danych Oracle CLOB zawierający dane znaków na podstawie domyślnego znaku ustawionego na serwerze o maksymalnym rozmiarze 4 GB. Spowoduje to mapowania na String.
NClob Typ danych Oracle NCLOB , który zawiera dane znaków, na podstawie krajowego znaku ustawionego na serwerze o maksymalnym rozmiarze 4 GB. Spowoduje to mapowania na String.

Deweloper aplikacji .NET może pobrać wartości Oracle LOB do podstawowych typów danych platformy .NET, takich jak Array typ Byte i String, lub wyspecjalizowany OracleLob typ danych. Klasa OracleLob obsługuje odczytywanie danych z bazy danych Oracle LOB i zapisywanie ich w bazie danych Oracle.

Poniżej przedstawiono główne cechy OracleLob typu danych, które odróżniają go od podstawowych typów danych platformy .NET:

  • Po pobraniu wartości Oracle z bazy danych Oracle LOB do OracleLob klasy można zmienić LOB dane w otwartej transakcji, a zmiany zostaną bezpośrednio odzwierciedlone w bazie danych. Jeśli pobierasz wartość Oracle LOB do Array typu Byte lub String zaktualizujesz te tablice, zmiany nie zostaną odzwierciedlone w bazie danych.

  • Gdy używasz OracleLob klasy do uzyskiwania dostępu do fragmentu LOB wartości, tylko ten fragment jest przekazywany z bazy danych Oracle do klienta. Gdy używasz GetChars metody w celu uzyskania dostępu do fragmentu LOB wartości, cała zawartość wartości jest przekazywana z bazy danych Oracle do klienta.

Aby uzyskać obiekt, wywołaj metodę OracleLobGetOracleLob .

Można skonstruować wartość OracleLob NULL przy użyciu tego formatu:

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

Ta technika jest używana głównie do testowania, czy LOB zwrócony z serwera ma wartość NULL, jak pokazano w tym przykładzie:

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

Wartość NULL LOB zachowuje się podobnie do zera bajtu LOB , który Read kończy się powodzeniem i zawsze zwraca zero bajtów.

Wybranie kolumny zawierającej LOB wartość null zwraca wartość Null.

Przed uzyskaniem tymczasowego LOBelementu należy rozpocząć transakcję. OracleDataReader W przeciwnym razie dane mogą nie zostać później pozyskane.

Możesz również otworzyć plik tymczasowy LOB w programie Oracle, wywołując DBMS_LOB. Procedura składowana systemu CREATETEMPORARY i powiązanie parametru wyjściowego LOB . Po stronie klienta tymczasowy LOB zachowuje się jak tabela oparta na LOBtabeli. Na przykład w celu zaktualizowania tymczasowego LOBelementu należy go ujęć w transakcję.

W poniższym przykładzie pokazano, jak otworzyć tymczasowy LOBplik :

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 WriteByte metoda kończy się niepowodzeniem, jeśli jest używana z danymi znaków i InvalidOperationException jest zgłaszana. Write Zamiast tego użyj metody .

Tymczasowe LOBs są zamykane tylko wtedy, gdy połączenie jest zamknięte, ale z buforowaniem i pod obciążeniem tymczasowe LOBnie zamykają się. Można to rozwiązać, usuwając tymczasowy LOBelement , wywołując tempLob.Dispose()polecenie .

Pola

Null

Reprezentuje obiekt o wartości null OracleLob .

Właściwości

CanRead

Pobiera wartość wskazującą, czy LOB strumień można odczytać.

CanSeek

Pobiera wartość wskazującą, czy można wykonywać operacje wyszukiwania do przodu i do tyłu.

CanTimeout

Pobiera wartość określającą, czy bieżący strumień może upłynął limit czasu.

(Odziedziczone po Stream)
CanWrite

Zawsze zwraca wartość true, niezależnie od tego, czy LOB obsługuje pisanie, czy nie.

ChunkSize

Pobiera wartość wskazującą minimalną liczbę bajtów do pobrania z serwera lub wysłania do serwera podczas operacji odczytu/zapisu.

Connection

Pobiera element OracleConnection używany przez to wystąpienie klasy OracleLob.

IsBatched

Pobiera wartość wskazującą, czy aplikacja nosi nazwę BeginBatch() metody .

IsNull

Pobiera wartość wskazującą, czy OracleLob element jest strumieniem Null .

IsTemporary

Pobiera wartość wskazującą, czy OracleLob element jest tymczasowym LOBelementem .

Length

Pobiera wartość zwracającą rozmiar obiektu OracleLob.

LobType

Pobiera wartość zwracającą LOB typ danych.

Position

Pobiera bieżącą pozycję odczytu w strumieniu OracleLob .

ReadTimeout

Pobiera lub ustawia wartość w milisekundach, która określa, jak długo strumień będzie próbował odczytać przed przekroczeniem limitu czasu.

(Odziedziczone po Stream)
Value

Pobiera wartość strumienia środowiska uruchomieniowego języka wspólnego równoważną wartości bazowej.

WriteTimeout

Pobiera lub ustawia wartość w milisekundach, która określa, jak długo strumień będzie próbował zapisać przed przekroczeniem limitu czasu.

(Odziedziczone po Stream)

Metody

Append(OracleLob)

Dołącza dane z określonego LOB elementu do bieżącego LOBelementu .

BeginBatch()

Zapobiega uruchamianiu wyzwalaczy po stronie serwera podczas wykonywania wielu operacji odczytu.

BeginBatch(OracleLobOpenMode)

Zapobiega uruchamianiu wyzwalaczy po stronie serwera podczas wykonywania wielu operacji odczytu i zapisu w określonym trybie dostępu.

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

Rozpoczyna asynchroniczną operację odczytu. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast tego).

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

Rozpoczyna asynchroniczną operację zapisu. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast tego).

(Odziedziczone po Stream)
Clone()

Tworzy nowy OracleLob obiekt, który odwołuje się do tego samego Oracle LOB co oryginalny OracleLob obiekt.

Close()

Zamyka bieżący strumień i zwalnia zasoby skojarzone ze strumieniem.

Close()

Zamyka bieżący strumień i zwalnia wszystkie zasoby (takie jak gniazda i dojścia plików) skojarzone z bieżącym strumieniem. Zamiast wywoływać tę metodę, upewnij się, że strumień jest prawidłowo usuwany.

(Odziedziczone po Stream)
CopyTo(Int64, OracleLob, Int64, Int64)

Kopie z tego OracleLob do miejsca docelowego OracleLob z określoną ilością danych i przesunięciem źródłowym.

CopyTo(OracleLob)

Kopie z tego OracleLob do miejsca docelowego OracleLob.

CopyTo(OracleLob, Int64)

Kopie z tego OracleLob do miejsca docelowego OracleLob z określoną ilością danych.

CopyTo(Stream)

Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(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. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(Odziedziczone po Stream)
CopyToAsync(Stream)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(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. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(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. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(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. Oba pozycje strumieni są zaawansowane przez liczbę skopiowanych bajtów.

(Odziedziczone po Stream)
CreateObjRef(Type)

Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym.

(Odziedziczone po MarshalByRefObject)
CreateWaitHandle()
Przestarzałe.
Przestarzałe.
Przestarzałe.

WaitHandle Przydziela obiekt.

(Odziedziczone po Stream)
Dispose()

Zwalnia zasoby używane przez ten obiekt.

Dispose()

Zwalnia wszelkie zasoby używane przez element Stream.

(Odziedziczone po Stream)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element Stream i opcjonalnie zwalnia zasoby zarządzane.

(Odziedziczone po Stream)
DisposeAsync()

Asynchronicznie zwalnia niezarządzane zasoby używane przez program Stream.

(Odziedziczone po Stream)
EndBatch()

Umożliwia wznawianie uruchamiania wyzwalaczy po stronie serwera po wykonaniu wielu operacji zapisu.

EndRead(IAsyncResult)

Oczekuje na ukończenie oczekującego odczytu asynchronicznego. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) zamiast tego).

(Odziedziczone po Stream)
EndWrite(IAsyncResult)

Kończy asynchroniczną operację zapisu. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) zamiast tego).

(Odziedziczone po Stream)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
Erase()

Usuwa wszystkie dane z tego OracleLobelementu .

Erase(Int64, Int64)

Usuwa określoną ilość danych z tego OracleLobelementu .

Flush()

Obecnie nieobsługiwane.

FlushAsync()

Asynchronicznie czyści wszystkie bufory dla tego strumienia i powoduje zapisanie wszystkich buforowanych danych na urządzeniu bazowym.

(Odziedziczone po Stream)
FlushAsync(CancellationToken)

Asynchronicznie czyści wszystkie bufory dla tego strumienia, powoduje zapisanie wszystkich buforowanych danych na urządzeniu źródłowym i monitorowanie żądań anulowania.

(Odziedziczone po Stream)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetLifetimeService()
Przestarzałe.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
InitializeLifetimeService()
Przestarzałe.

Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
ObjectInvariant()
Przestarzałe.

Zapewnia obsługę programu Contract.

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

Odczytuje sekwencję bajtów z bieżącego OracleLob strumienia i rozwija pozycję w strumieniu przez liczbę odczytanych bajtów.

Read(Span<Byte>)

Po zastąpieniu w klasie pochodnej odczytuje sekwencję bajtów z bieżącego strumienia i przesuwa pozycję w strumieniu przez liczbę odczytanych bajtów.

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

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu przez liczbę odczytanych bajtów.

(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.

(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.

(Odziedziczone po Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Odczytuje co najmniej minimalną liczbę bajtów z bieżącego strumienia i rozwija pozycję w strumieniu przez liczbę odczytanych bajtów.

(Odziedziczone po Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Asynchronicznie odczytuje co najmniej minimalną liczbę bajtów z bieżącego strumienia, zwiększa pozycję w strumieniu przez liczbę odczytanych bajtów i monitoruje żądania anulowania.

(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.

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

Odczytuje count liczbę bajtów z bieżącego strumienia i przesuwa pozycję w strumieniu.

(Odziedziczone po Stream)
ReadExactly(Span<Byte>)

Odczytuje bajty z bieżącego strumienia i przesuwa pozycję w strumieniu do buffer momentu wypełnienia.

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

Asynchronicznie odczytuje count liczbę bajtów z bieżącego strumienia, zwiększa pozycję w strumieniu i monitoruje żądania anulowania.

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

Asynchronicznie odczytuje bajty z bieżącego strumienia, przesuwa pozycję w strumieniu do buffer momentu wypełnienia i monitoruje żądania anulowania.

(Odziedziczone po Stream)
Seek(Int64, SeekOrigin)

Ustawia położenie bieżącego OracleLob strumienia.

SetLength(Int64)

Ustawia długość strumienia OracleLob na wartość mniejszą niż bieżąca długość.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

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

Zapisuje sekwencję bajtów do bieżącego OracleLob strumienia i przesuwa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów.

Write(ReadOnlySpan<Byte>)

Po zastąpieniu w klasie pochodnej zapisuje sekwencję bajtów do bieżącego strumienia i przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów.

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

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia i przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów.

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

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania.

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

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia, przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów i monitoruje żądania anulowania.

(Odziedziczone po Stream)
WriteByte(Byte)

Zapisuje bajt do bieżącej pozycji w strumieniu i przesuwa pozycję w strumieniu OracleLob o jeden bajt.

WriteByte(Byte)

Zapisuje bajt do bieżącej pozycji w strumieniu i przesuwa pozycję w strumieniu o jeden bajt.

(Odziedziczone po Stream)

Jawne implementacje interfejsu

IDisposable.Dispose()

Zwalnia wszelkie zasoby używane przez element Stream.

(Odziedziczone po Stream)

Dotyczy