OracleLob Klasa

Definicja

Reprezentuje duży typ danych binarnych obiektów (LOB) przechowywanych 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 tego, że dane są przechowywane na serwerze zamiast w pliku fizycznym w systemie operacyjnym. Może to być również obiekt do 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 typ ArrayByte.
Clob Typ danych Oracle CLOB zawierający dane znaków na podstawie domyślnego zestawu znaków na serwerze o maksymalnym rozmiarze 4 GB. To mapuje na String.
NClob Typ danych Oracle NCLOB , który zawiera dane znaków, na podstawie narodowego zestawu znaków na serwerze o maksymalnym rozmiarze 4 GB. To mapuje 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 LOB z bazy danych Oracle do OracleLob klasy można zmienić LOB dane w otwartej transakcji, a zmiany zostaną bezpośrednio odzwierciedlone w bazie danych. Jeśli po pobraniu wartości Oracle LOB do Array typu Byte lub String zaktualizowaniu tych tablic 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ć OracleLob obiekt, wywołaj metodę GetOracleLob .

Obiekt o wartości NULL można utworzyć OracleLob w następującym formacie:

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 LOB kolumny zawierającej wartość null zwraca wartość Null.

Przed uzyskaniem tymczasowego LOBelementu należy rozpocząć transakcję . OracleDataReader W przeciwnym razie uzyskanie danych może zakończyć się niepowodzeniem później.

Możesz również otworzyć tymczasowy obiekt 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, aby zaktualizować tymczasowy LOBelement , musi być ujęta w transakcji.

W poniższym przykładzie pokazano, jak otworzyć tymczasowy plik 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

Metoda dziedziczona WriteByte kończy się niepowodzeniem, jeśli jest używana z danymi znaków, a InvalidOperationException element jest zgłaszany. Write Zamiast tego użyj metody .

Tymczasowe LOBs są zamykane tylko wtedy, gdy połączenie jest zamknięte, ale w przypadku buforowania i pod obciążeniem tymczasowe LOBnie zamykają się. Można rozwiązać ten problem, dysponując tymczasowy LOBelement , wywołując metodę tempLob.Dispose().

Pola

Null

Reprezentuje obiekt o wartości null OracleLob .

Właściwości

CanRead

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

CanSeek

Pobiera wartość wskazującą, czy można wykonać 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 zapisywanie, 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 dane OracleConnection używane przez to wystąpienie obiektu OracleLob.

IsBatched

Pobiera wartość wskazującą, czy aplikacja nazwała metodę BeginBatch() .

IsNull

Pobiera wartość wskazującą, czy OracleLob jest to Null strumień.

IsTemporary

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

Length

Pobiera wartość zwracającą rozmiar OracleLobelementu .

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 upływem 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ń podejmie próbę zapisania przed upływem 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)

Uniemożliwia wyzwalanie wyzwalaczy po stronie serwera podczas wykonywania wielu operacji odczytu i zapisu w określonym trybie dostępu.

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

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

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

Rozpoczyna operację zapisu asynchronicznego. (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 uchwyty 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. Obie 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. Obie 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. Obie 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. Obie 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. Obie 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. Obie 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 Streamprogram .

(Odziedziczone po Stream)
EndBatch()

Umożliwia wyzwalaczom po stronie serwera wznowienie uruchamiania po wykonaniu wielu operacji zapisu.

EndRead(IAsyncResult)

Czeka 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 elementu OracleLob.

Erase(Int64, Int64)

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

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 bieżące wystąpienie.

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

Uzyskuje obiekt usługi okresu istnienia, aby kontrolować zasady 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 według liczby odczytanych bajtów.

Read(Span<Byte>)

Po zastąpieniu w klasie pochodnej odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu według liczby odczytanych bajtów.

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

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i rozwija pozycję w strumieniu według liczby odczytanych bajtów.

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

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, rozwija pozycję w strumieniu według liczby odczytanych bajtów i monitoruje żądania anulowania.

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

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia, rozwija pozycję w strumieniu według liczby 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 według liczby 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 według liczby odczytanych bajtów i monitoruje żądania anulowania.

(Odziedziczone po Stream)
ReadByte()

Odczytuje bajt ze strumienia i rozwija pozycję w strumieniu według jednego bajtu 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 rozwija pozycję w strumieniu.

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

Odczytuje bajty z bieżącego strumienia i rozwija pozycję w strumieniu do momentu buffer 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 przechodzi bieżącą pozycję w tym strumieniu przez liczbę zapisanych bajtów.

Write(ReadOnlySpan<Byte>)

Gdy zastąpisz klasę pochodną, zapisuje sekwencję bajtów do bieżącego strumienia i rozwija bieżącą pozycję w tym strumieniu według liczby zapisanych bajtów.

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

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia i rozwija 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 OracleLob i rozwija pozycję w strumieniu według jednego bajtu.

WriteByte(Byte)

Zapisuje bajt do bieżącej pozycji w strumieniu i rozwija pozycję w strumieniu według jednego bajtu.

(Odziedziczone po Stream)

Jawne implementacje interfejsu

IDisposable.Dispose()

Zwalnia wszelkie zasoby używane przez element Stream.

(Odziedziczone po Stream)

Dotyczy