OracleLob Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje velký datový typ binárního objektu (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
OracleLob se liší od OracleBFile tím, že data jsou uložena 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 s maximální velikostí 4 gigabajty (GB). Tím se mapuje na Array typ Byte. |
Clob |
Datový typ Oracle CLOB , který obsahuje data znaků 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ů na základě národní znakové sady 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 datového typu OracleLob. Třída OracleLob podporuje čtení dat z databáze Oracle a zápis do databáze Oracle LOB .
Tady jsou hlavní charakteristiky datového typu OracleLob, které ho odlišují od základních datových typů .NET:
Po načtení hodnoty Oracle z databáze Oracle
LOBdo OracleLob třídy můžete změnitLOBdata v otevřené transakci a vaše změny se přímo projeví v databázi. Pokud načtete hodnotu OracleLOBdo Array typu Byte nebo String aktualizujete tato pole, změny se neprojeví v databázi.Pokud používáte OracleLob třídu pro přístup k bloku
LOBhodnoty, předává se klientovi pouze tento blok dat z databáze Oracle. Při použití GetChars metody pro přístup k blokuLOBhodnoty, celý obsah této hodnoty se předává z databáze Oracle klientovi.
Chcete-li získat OracleLob objekt, zavolejte metodu GetOracleLob .
Pomocí tohoto formátu můžete vytvořit OracleLob hodnotu NULL:
OracleLob myLob = OracleLob.Null;
Dim myLob As OracleLob = OracleLob.Null
Tato technika se používá především k testování, zda vrácený LOB ze serveru má hodnotu NULL, jak ukazuje tento příklad:
if (myLob == OracleLob.Null)
If (myLob = OracleLob.Null) Then
Hodnota NULL LOB se chová podobně jako nulový bajt LOB , který Read je úspěšný a vždy vrátí nula bajtů.
Výběr LOB sloupce, který obsahuje hodnotu null, vrátí Nullhodnotu .
Před získáním dočasného LOBsouboru musíte zahájit transakci .
OracleDataReader Jinak se nemusí podařit získat data později.
Dočasný soubor LOB můžete otevřít také v Oracle voláním DBMS_LOB. CREATETEMPORARY systém uložená procedura a vazba výstupního parametru LOB . Na straně klienta se dočasný LOB chová jako tabulka založená LOBna tabulce . Chcete-li například aktualizovat dočasné LOB, musí být uzavřen v transakci.
Následující příklad ukazuje, jak otevřít dočasný 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
Zděděná WriteByte metoda selže, pokud se používá s daty znaků a InvalidOperationException je vyvolána. Místo toho použijte metodu Write .
Dočasné LOBsoubory jsou uzavřeny pouze v případě, že je připojení uzavřeno, ale s sdružováním a zatížením, dočasné LOBsoubory se nezavřou. To lze vyřešit odstraněním dočasného LOBvolání .tempLob.Dispose()
Pole
| Name | Description |
|---|---|
| Null |
Představuje objekt null OracleLob . |
Vlastnosti
| Name | Description |
|---|---|
| CanRead |
Získá hodnotu určující, zda |
| CanSeek |
Získá hodnotu označující, zda lze provádět operace vpřed a zpětného hledání. |
| 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 to, jestli |
| ChunkSize |
Získá hodnotu označující minimální počet bajtů, ze kterých se má načíst nebo odeslat na server během operace čtení a zápisu. |
| Connection |
OracleConnection Získá používané touto instancí OracleLob. |
| IsBatched |
Získá hodnotu označující, zda aplikace volala metodu BeginBatch() . |
| IsNull |
Získá hodnotu, která označuje, zda OracleLob je Null to datový proud. |
| IsTemporary |
Získá hodnotu určující, zda je dočasný OracleLob |
| Length |
Získá hodnotu, která vrátí velikost OracleLob. |
| LobType |
Získá hodnotu, která vrátí |
| 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í přečíst před uplynutím časového limitu. (Zděděno od Stream) |
| Value |
Získá hodnotu datového proudu modulu CLR (Common Language Runtime) odpovídající podkladové hodnotě. |
| WriteTimeout |
Získá nebo nastaví hodnotu v milisekundách, která určuje, jak dlouho se datový proud pokusí zapsat před uplynutím časového limitu. (Zděděno od Stream) |
Metody
| Name | Description |
|---|---|
| Append(OracleLob) |
Připojí data ze zadaného |
| 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í. (Místo toho zvažte použití ReadAsync(Byte[], Int32, Int32) .) (Zděděno od Stream) |
| BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Zahájí asynchronní operaci zápisu. (Místo toho zvažte použití WriteAsync(Byte[], Int32, Int32) .) (Zděděno od Stream) |
| Clone() |
Vytvoří nový OracleLob objekt, který odkazuje na stejný Oracle |
| 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 je datový proud správně uvolněn. (Zděděno od Stream) |
| CopyTo(Int64, OracleLob, Int64, Int64) |
Zkopíruje z toho OracleLob do cíle OracleLob se zadaným množstvím dat a posunem zdroje. |
| CopyTo(OracleLob, Int64) |
Zkopíruje z toho OracleLob do cíle OracleLob se zadaným množstvím dat. |
| CopyTo(OracleLob) | |
| CopyTo(Stream, Int32) |
Načte bajty z aktuálního datového proudu a zapíše je do jiného datového proudu pomocí zadané velikosti vyrovnávací paměti. Obě pozice datových proudů jsou rozšířeny počtem bajtů zkopírovaných. (Zděděno od Stream) |
| 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ů jsou rozšířeny počtem bajtů zkopírovaných. (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ů jsou rozšířeny počtem bajtů zkopírovaných. (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ů jsou rozšířeny počtem bajtů zkopírovaných. (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ů jsou rozšířeny počtem bajtů zkopírovaných. (Zděděno od Stream) |
| CreateObjRef(Type) |
Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužícího ke komunikaci se vzdáleným objektem. (Zděděno od MarshalByRefObject) |
| CreateWaitHandle() |
Zastaralé.
Zastaralé.
Zastaralé.
WaitHandle Přidělí 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é Stream a volitelně uvolní spravované prostředky. (Zděděno od Stream) |
| EndBatch() |
Umožňuje triggerům na straně serveru pokračovat v aktivaci po provedení více operací zápisu. |
| EndRead(IAsyncResult) |
Čeká na dokončení čekajícího asynchronního čtení. (Místo toho zvažte použití ReadAsync(Byte[], Int32, Int32) .) (Zděděno od Stream) |
| EndWrite(IAsyncResult) |
Ukončí asynchronní operaci zápisu. (Místo toho zvažte použití WriteAsync(Byte[], Int32, Int32) .) (Zděděno od Stream) |
| Equals(Object) |
Určuje, zda je zadaný objekt roven aktuálnímu objektu. (Zděděno od Object) |
| Erase() |
Vymaže všechna data z tohoto OracleLob. |
| Erase(Int64, Int64) |
Vymaže zadané množství dat z tohoto OracleLobsouboru . |
| 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 uložených do vyrovnávací paměti do podkladové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 uložených do vyrovnávací paměti do podkladového zařízení a monitoruje žádosti o zrušení. (Zděděno od Stream) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetLifetimeService() |
Zastaralé.
Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| InitializeLifetimeService() |
Zastaralé.
Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci. (Zděděno od MarshalByRefObject) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (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) |
Přečte posloupnost bajtů z aktuálního OracleLob datového proudu a posune pozici v datovém proudu o počet přečtených bajtů. |
| ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronně přečte posloupnost bajtů z aktuálního datového proudu, posune pozici v datovém proudu o počet přečtených bajtů a monitoruje žádosti o zrušení. (Zděděno od Stream) |
| ReadAsync(Byte[], Int32, Int32) |
Asynchronně čte posloupnost bajtů z aktuálního datového proudu a posune pozici v datovém proudu o počet přečtených bajtů. (Zděděno od Stream) |
| ReadByte() |
Přečte bajt ze streamu a posune pozici v rámci datového proudu o jeden bajt nebo vrátí -1, pokud je na konci datového proudu. (Zděděno od Stream) |
| Seek(Int64, SeekOrigin) |
Nastaví pozici v aktuálním OracleLob datovém proudu. |
| SetLength(Int64) |
Nastaví délku OracleLob datového proudu na hodnotu menší než 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 tomto datovém proudu o počet zapsaných bajtů. |
| WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Asynchronně zapíše posloupnost bajtů do aktuálního datového proudu, posune aktuální pozici v tomto datovém proudu o počet zapsaných bajtů a monitoruje žádosti o zrušení. (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 tomto datovém proudu o počet zapsaných bajtů. (Zděděno od Stream) |
| WriteByte(Byte) |
Zapíše bajt na aktuální pozici v datovém OracleLob proudu a posune pozici v datovém proudu o jeden bajt. |
| WriteByte(Byte) |
Zapíše bajt na aktuální pozici v datovém proudu a posune pozici v rámci datového proudu o jeden bajt. (Zděděno od Stream) |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Uvolní všechny prostředky používané nástrojem Stream. (Zděděno od Stream) |