OracleLob Třída

Definice

Představuje velký objekt binární datový typ (LOB) uložený na serveru Oracle. Tato třída se nemůže dědit.

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
Dědičnost
Implementuje

Poznámky

Liší OracleLob se od objektu OracleBFile v tom, že data jsou uložená na serveru místo ve fyzickém souboru v operačním systému. Může to být také objekt pro čtení i zápis, na rozdíl od objektu OracleBFile, který je vždy jen pro čtení.

Může OracleLob to být jeden z těchto OracleType datových typů.

Datový typ OracleType Description
Blob Datový typ Oracle BLOB , který obsahuje binární data o maximální velikosti 4 gigabajty (GB). Tím se namapuje na Array typ Byte.
Clob Datový typ Oracle CLOB , který obsahuje znaková data na základě výchozí znakové sady na serveru s maximální velikostí 4 GB. To se mapuje na String.
NClob Datový typ Oracle NCLOB , který obsahuje data znaků, založený na národní znakové sadě na serveru s maximální velikostí 4 GB. To se mapuje na String.

Vývojář aplikace .NET může načíst hodnoty Oracle LOB do základních datových typů .NET, například Array typu Byte a String, nebo specializovaného OracleLob datového typu. Třída OracleLob podporuje čtení dat z oracle a zápis do LOB databáze Oracle.

Níže jsou uvedené hlavní charakteristiky datového typu, které ho OracleLob odlišují od základních datových typů .NET:

  • Po načtení hodnoty Oracle LOB z databáze Oracle do OracleLob třídy můžete změnit LOB data v otevřené transakci a změny se projeví přímo v databázi. Pokud načtete hodnotu Oracle LOB do Array typu Byte nebo String tato pole aktualizujete, změny se neprojeví v databázi.

  • Pokud použijete OracleLob třídu pro přístup k bloku LOB hodnoty, pouze tento blok dat se předává z databáze Oracle klientovi. Když použijete metodu GetChars pro přístup k bloku LOB hodnoty, celý obsah hodnoty se předá z databáze Oracle klientovi.

Chcete-li získat OracleLob objekt, zavolejte metodu GetOracleLob .

Pomocí tohoto formátu můžete vytvořit OracleLob objekt s hodnotou NULL:

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

Tato technika se používá především k otestování, jestli LOB má vrácené ze serveru hodnotu NULL, jak je znázorněno v tomto příkladu:

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

Hodnota NULL LOB se chová podobně jako nulová bajtová LOB hodnota, která Read je úspěšná a vždy vrací nula bajtů.

Při výběru LOB sloupce, který obsahuje hodnotu null, se vrátí Null.

Před získáním dočasného LOBsouboru je nutné zahájit transakci. V opačném OracleDataReader případě může dojít k selhání získání dat později.

Dočasné v Oracle můžete také otevřít LOB voláním DBMS_LOB. CREATETEMPORARY systém uložená procedura a vazba výstupního LOB parametru. Na straně klienta se dočasný LOB objekt chová jako tabulkový LOBobjekt . Chcete-li například aktualizovat dočasný LOBsoubor , musí být uzavřen v transakci.

Následující příklad ukazuje, jak otevřít dočasný LOBsoubor :

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(); 

Poznámka

Zděděná WriteByte metoda selže, pokud se použije s daty znaků a InvalidOperationException vyvolá se. Místo toho použijte metodu Write .

Dočasná LOBpřipojení se uzavřou, ale při sdružování a při zatížení se dočasná LOBpřipojení neuzavřou. Tento problém lze vyřešit vyřazením dočasného LOBsouboru , a to vyvoláním tempLob.Dispose().

Pole

Null

Představuje objekt null OracleLob .

Vlastnosti

CanRead

Získá hodnotu označující, zda LOB datový proud lze číst.

CanSeek

Získá hodnotu označující, zda lze dopředné a zpětné hledání operace provést.

CanTimeout

Získá hodnotu, která určuje, zda aktuální datový proud může vypršení časového limitu.

(Zděděno od Stream)
CanWrite

Vždy vrátí hodnotu true, bez ohledu na LOB to, jestli podporuje psaní nebo ne.

ChunkSize

Získá hodnotu označující minimální počet bajtů k načtení nebo odeslání na server během operace čtení a zápisu.

Connection

OracleConnection Získá objekt používaný touto instancí objektu OracleLob.

IsBatched

Získá hodnotu označující, zda aplikace volala metodu BeginBatch() .

IsNull

Získá hodnotu, která označuje, zda OracleLob je Null datový proud.

IsTemporary

Získá hodnotu označující, zda OracleLob je dočasný LOB.

Length

Získá hodnotu, která vrátí velikost OracleLob.

LobType

Získá hodnotu, která vrací LOB datový typ.

Position

Získá aktuální pozici čtení v datovém OracleLob proudu.

ReadTimeout

Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud pokusí číst před vypršením časového limitu.

(Zděděno od Stream)
Value

Získá hodnotu společného jazyka runtime datový proud ekvivalent podkladové hodnoty.

WriteTimeout

Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud pokusí zapisovat před vypršením časového limitu.

(Zděděno od Stream)

Metody

Append(OracleLob)

Připojí data ze zadaného LOB objektu k aktuálnímu LOB.

BeginBatch()

Zabraňuje aktivaci triggerů na straně serveru při provádění více operací čtení.

BeginBatch(OracleLobOpenMode)

Zabraňuje aktivaci triggerů na straně serveru při provádění více operací čtení a zápisu v zadaném režimu přístupu.

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

Zahájí asynchronní operaci čtení. (Zvažte místo toho použití ReadAsync(Byte[], Int32, Int32) .)

(Zděděno od Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Zahájí asynchronní operaci zápisu. (Zvažte místo toho použití WriteAsync(Byte[], Int32, Int32) .)

(Zděděno od Stream)
Clone()

Vytvoří nový OracleLob objekt, který odkazuje na stejný Oracle LOB jako původní OracleLob objekt.

Close()

Zavře aktuální datový proud a uvolní prostředky, které jsou přidružené k datovému proudu.

Close()

Zavře aktuální datový proud a uvolní všechny prostředky (například sokety a popisovače souborů) přidružené k aktuálnímu datovému proudu. Místo volání této metody se ujistěte, že datový proud je správně odstraněn.

(Zděděno od Stream)
CopyTo(Int64, OracleLob, Int64, Int64)

Zkopíruje z toho OracleLob do cílového umístění OracleLob se zadaným množstvím dat a posunem zdroje.

CopyTo(OracleLob)

Zkopíruje z tohoto OracleLob do cílového umístění OracleLob.

CopyTo(OracleLob, Int64)

Zkopíruje z této OracleLob adresy do cílového umístění OracleLob se zadaným množstvím dat.

CopyTo(Stream)

Přečte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů.

(Zděděno od Stream)
CopyTo(Stream, Int32)

Načte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu s použitím zadané velikosti vyrovnávací paměti. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů.

(Zděděno od Stream)
CopyToAsync(Stream)

Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů.

(Zděděno od Stream)
CopyToAsync(Stream, CancellationToken)

Asynchronně přečte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu pomocí zadaného tokenu zrušení. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů.

(Zděděno od Stream)
CopyToAsync(Stream, Int32)

Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů.

(Zděděno od Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Asynchronně čte bajty z aktuálního datového proudu a zapisuje je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti a tokenu zrušení. Obě pozice datových proudů se posouvají podle počtu zkopírovaných bajtů.

(Zděděno od Stream)
CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy sloužící ke komunikaci se vzdáleným objektem.

(Zděděno od MarshalByRefObject)
CreateWaitHandle()
Zastaralé.
Zastaralé.
Zastaralé.

Přidělí WaitHandle objekt.

(Zděděno od Stream)
Dispose()

Uvolní prostředky, které tento objekt používá.

Dispose()

Uvolní všechny prostředky používané nástrojem Stream.

(Zděděno od Stream)
Dispose(Boolean)

Uvolní nespravované prostředky používané nástrojem Stream a volitelně uvolní spravované prostředky.

(Zděděno od Stream)
DisposeAsync()

Asynchronně uvolní nespravované prostředky, které Streampoužívá .

(Zděděno od Stream)
EndBatch()

Umožňuje triggerům na straně serveru obnovit aktivaci po provedení více operací zápisu.

EndRead(IAsyncResult)

Čeká na dokončení čekajícího asynchronního čtení. (Zvažte místo toho použití ReadAsync(Byte[], Int32, Int32) .)

(Zděděno od Stream)
EndWrite(IAsyncResult)

Ukončí asynchronní operaci zápisu. (Zvažte místo toho použití WriteAsync(Byte[], Int32, Int32) .)

(Zděděno od Stream)
Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
Erase()

Vymaže všechna data z tohoto OracleLobsouboru .

Erase(Int64, Int64)

Vymaže zadané množství dat z tohoto OracleLob.

Flush()

Aktuálně se nepodporuje.

FlushAsync()

Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud a způsobí zápis všech dat do vyrovnávací paměti do základního zařízení.

(Zděděno od Stream)
FlushAsync(CancellationToken)

Asynchronně vymaže všechny vyrovnávací paměti pro tento datový proud, způsobí zápis všech dat do vyrovnávací paměti do základního zařízení a monitoruje požadavky na zrušení.

(Zděděno od Stream)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetLifetimeService()
Zastaralé.

Načte aktuální životnost objektu služby, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
InitializeLifetimeService()
Zastaralé.

Získá životnost objektu služby, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu.

(Zděděno od MarshalByRefObject)
ObjectInvariant()
Zastaralé.

Poskytuje podporu pro Contract.

(Zděděno od Stream)
Read(Byte[], Int32, Int32)

Načte posloupnost bajtů z aktuálního OracleLob datového proudu a posune pozici v rámci datového proudu o počet přečtených bajtů.

Read(Span<Byte>)

Při přepsání v odvozené třídě přečte sekvenci bajtů z aktuálního datového proudu a posune pozici v rámci datového proudu o počet přečtených bajtů.

(Zděděno od Stream)
ReadAsync(Byte[], Int32, Int32)

Asynchronně přečte posloupnost bajtů z aktuálního datového proudu a posune pozici v rámci datového proudu o počet přečtených bajtů.

(Zděděno od Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronně přečte sekvenci bajtů z aktuálního datového proudu, posune pozici v rámci datového proudu o počet přečtených bajtů a sleduje požadavky na zrušení.

(Zděděno od Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Asynchronně přečte sekvenci bajtů z aktuálního datového proudu, posune pozici v rámci datového proudu o počet přečtených bajtů a sleduje požadavky na zrušení.

(Zděděno od Stream)
ReadAtLeast(Span<Byte>, Int32, Boolean)

Přečte alespoň minimální počet bajtů z aktuálního datového proudu a posune pozici v rámci datového proudu o počet přečtených bajtů.

(Zděděno od Stream)
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken)

Asynchronně přečte alespoň minimální počet bajtů z aktuálního datového proudu, posune pozici v rámci datového proudu o počet přečtených bajtů a sleduje požadavky na zrušení.

(Zděděno od Stream)
ReadByte()

Načte bajt z datového proudu a posune pozici v datovém proudu o jeden bajt, nebo vrátí hodnotu -1, pokud je na konci datového proudu.

(Zděděno od Stream)
ReadExactly(Byte[], Int32, Int32)

Načte count počet bajtů z aktuálního datového proudu a posune pozici v rámci datového proudu.

(Zděděno od Stream)
ReadExactly(Span<Byte>)

Načte bajty z aktuálního datového proudu a posune pozici v rámci datového proudu, dokud buffer není vyplněna.

(Zděděno od Stream)
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronně načte count počet bajtů z aktuálního datového proudu, posune pozici v rámci datového proudu a monitoruje požadavky na zrušení.

(Zděděno od Stream)
ReadExactlyAsync(Memory<Byte>, CancellationToken)

Asynchronně čte bajty z aktuálního datového proudu, posune pozici v rámci datového proudu až do buffer vyplnění a monitoruje žádosti o zrušení.

(Zděděno od Stream)
Seek(Int64, SeekOrigin)

Nastaví pozici aktuálního datového OracleLob proudu.

SetLength(Int64)

Nastaví délku datového OracleLob proudu na hodnotu menší, než je aktuální délka.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
Write(Byte[], Int32, Int32)

Zapíše posloupnost bajtů do aktuálního OracleLob datového proudu a posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů.

Write(ReadOnlySpan<Byte>)

Při přepsání v odvozené třídě zapíše sekvenci bajtů do aktuálního datového proudu a posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů.

(Zděděno od Stream)
WriteAsync(Byte[], Int32, Int32)

Asynchronně zapíše posloupnost bajtů do aktuálního datového proudu a posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů.

(Zděděno od Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronně zapíše sekvenci bajtů do aktuálního datového proudu, posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů a sleduje požadavky na zrušení.

(Zděděno od Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronně zapíše sekvenci bajtů do aktuálního datového proudu, posune aktuální pozici v rámci tohoto datového proudu o počet zapsaných bajtů a sleduje požadavky na zrušení.

(Zděděno od Stream)
WriteByte(Byte)

Zapíše bajt na aktuální pozici v datovém OracleLob proudu a posune pozici v rámci datového proudu o jeden bajt.

WriteByte(Byte)

Zapíše bajt na aktuální pozici v datovém proudu a posune pozici v datovém proudu o jeden bajt.

(Zděděno od Stream)

Explicitní implementace rozhraní

IDisposable.Dispose()

Uvolní všechny prostředky používané nástrojem Stream.

(Zděděno od Stream)

Metody rozšíření

CopyToAsync(Stream, PipeWriter, CancellationToken)

Asynchronně přečte bajty z objektu Stream a zapíše je do zadaného PipeWriterobjektu pomocí tokenu zrušení.

Platí pro