OracleLob Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar en stor datatyp för binärt objekt (LOB) som lagras på en Oracle-server. Det går inte att ärva den här klassen.
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
- Arv
- Implementeringar
Kommentarer
En OracleLob skiljer sig från en OracleBFile i att data lagras på servern i stället för i en fysisk fil i operativsystemet. Det kan också vara ett skrivskyddat objekt, till skillnad från ett OracleBFile, som alltid är skrivskyddat.
En OracleLob kan vara en av dessa OracleType datatyper.
| OracleType-datatyp | Description |
|---|---|
Blob |
En Oracle-datatyp BLOB som innehåller binära data med en maximal storlek på 4 gigabyte (GB). Detta mappar till en Array av typen Byte. |
Clob |
En Oracle-datatyp CLOB som innehåller teckendata, baserat på standardteckenuppsättningen på servern, med en maximal storlek på 4 GB. Detta mappar till String. |
NClob |
En Oracle-datatyp NCLOB som innehåller teckendata, baserat på det nationella tecken som angetts på servern med en maximal storlek på 4 GB. Detta mappar till String. |
En .NET programutvecklare kan hämta Oracle LOB-värden till grundläggande .NET datatyper, till exempel Array av typen Byte och String eller den specialiserade datatypen OracleLob. Klassen OracleLob stöder läsning av data från och skrivning till Oracle LOB i Oracle-databasen.
Följande är de viktigaste egenskaperna för en OracleLob datatyp som skiljer den från grundläggande .NET datatyper:
När du har hämtat Oracle-värdet
LOBfrån Oracle-databasen till OracleLob klassen kan du ändraLOBdata i en öppen transaktion och dina ändringar återspeglas direkt i databasen. Om du hämtar Oracle-värdetLOBtill en Array typ Byte eller String uppdaterar dessa matriser återspeglas inte dina ändringar i databasen.När du använder OracleLob klassen för att komma åt ett segment av ett
LOBvärde skickas endast det segmentet från Oracle-databasen till klienten. När du använder GetChars metoden för att komma åt ett segment av ettLOBvärde skickas hela innehållet i värdet från Oracle-databasen till klienten.
Anropa metoden för GetOracleLob att hämta ett OracleLob objekt.
Du kan skapa en OracleLob som är NULL med det här formatet:
OracleLob myLob = OracleLob.Null;
Dim myLob As OracleLob = OracleLob.Null
Den här tekniken används främst för att testa om en LOB som returneras från servern är NULL, vilket visas i det här exemplet:
if (myLob == OracleLob.Null)
If (myLob = OracleLob.Null) Then
En NULL LOB fungerar på samma sätt som en noll byte LOB i som Read lyckas och returnerar alltid noll byte.
Om du väljer en LOB kolumn som innehåller ett null-värde returneras Null.
Du måste påbörja en transaktion innan du hämtar en tillfällig LOB. Annars OracleDataReader kan det hända att data inte hämtas senare.
Du kan också öppna en tillfällig LOB i Oracle genom att anropa DBMS_LOB. CREATETEMPORARY systemlagringsprocedur och bindning av en LOB utdataparameter. På klientsidan fungerar en tillfällig LOB som en tabellbaserad LOB. Om du till exempel vill uppdatera den tillfälliga LOBmåste den omges av en transaktion.
I följande exempel visas hur du öppnar en tillfällig 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
Den ärvda WriteByte metoden misslyckas om den används med teckendata och en InvalidOperationException genereras. Write Använd metoden i stället.
Tillfälliga LOBs stängs endast när anslutningen stängs, men med pooler och under belastning stängs inte tillfälliga LOBs. Detta kan lösas genom att ta bort den tillfälliga LOB, genom att tempLob.Dispose()anropa .
Fält
| Name | Description |
|---|---|
| Null |
Representerar ett null-objekt OracleLob . |
Egenskaper
| Name | Description |
|---|---|
| CanRead |
Hämtar ett värde som anger om |
| CanSeek |
Hämtar ett värde som anger om åtgärder för framåt- och bakåtsökning kan utföras. |
| CanTimeout |
Hämtar ett värde som avgör om den aktuella strömmen kan överskrida tidsgränsen. (Ärvd från Stream) |
| CanWrite |
Returnerar alltid sant, oavsett om stöder |
| ChunkSize |
Hämtar ett värde som anger det minsta antalet byte som ska hämtas från eller skickas till servern under en läs-/skrivåtgärd. |
| Connection |
Hämtar den OracleConnection som används av den här instansen OracleLobav . |
| IsBatched |
Hämtar ett värde som anger om ett program som kallas BeginBatch() metoden. |
| IsNull | |
| IsTemporary |
Hämtar ett värde som anger om OracleLob är en tillfällig |
| Length |
Hämtar ett värde som returnerar storleken på OracleLob. |
| LobType |
Hämtar ett värde som returnerar |
| Position |
Hämtar den aktuella läspositionen OracleLob i strömmen. |
| ReadTimeout |
Hämtar eller anger ett värde i millisekunder som avgör hur länge strömmen ska försöka läsa innan tidsgränsen nås. (Ärvd från Stream) |
| Value |
Hämtar det vanliga språkkörningsströmvärdet som motsvarar det underliggande värdet. |
| WriteTimeout |
Hämtar eller anger ett värde i millisekunder som avgör hur länge strömmen ska försöka skriva innan tidsgränsen nås. (Ärvd från Stream) |
Metoder
| Name | Description |
|---|---|
| Append(OracleLob) |
Lägger till data från den angivna |
| BeginBatch() |
Förhindrar att utlösare på serversidan utlöses när flera läsåtgärder utförs. |
| BeginBatch(OracleLobOpenMode) |
Förhindrar att utlösare på serversidan utlöses när flera läs- och skrivåtgärder utförs i det angivna åtkomstläget. |
| BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Påbörjar en asynkron läsåtgärd. (Överväg att använda ReadAsync(Byte[], Int32, Int32) i stället.) (Ärvd från Stream) |
| BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Påbörjar en asynkron skrivåtgärd. (Överväg att använda WriteAsync(Byte[], Int32, Int32) i stället.) (Ärvd från Stream) |
| Clone() |
Skapar ett nytt OracleLob objekt som refererar till samma Oracle |
| Close() |
Stänger den aktuella strömmen och släpper resurser som är associerade med strömmen. |
| Close() |
Stänger den aktuella strömmen och släpper alla resurser (till exempel socketar och filhandtag) som är associerade med den aktuella strömmen. I stället för att anropa den här metoden kontrollerar du att dataströmmen tas bort korrekt. (Ärvd från Stream) |
| CopyTo(Int64, OracleLob, Int64, Int64) |
Kopierar från detta OracleLob till ett mål OracleLob med den angivna mängden data och källförskjutningen. |
| CopyTo(OracleLob, Int64) |
Kopierar från detta OracleLob till ett mål OracleLob med den angivna mängden data. |
| CopyTo(OracleLob) | |
| CopyTo(Stream, Int32) |
Läser byteen från den aktuella strömmen och skriver dem till en annan ström med en angiven buffertstorlek. Båda strömmarnas positioner avanceras av antalet kopierade byte. (Ärvd från Stream) |
| CopyTo(Stream) |
Läser byteen från den aktuella strömmen och skriver dem till en annan ström. Båda strömmarnas positioner avanceras av antalet kopierade byte. (Ärvd från Stream) |
| CopyToAsync(Stream, Int32, CancellationToken) |
Läser asynkront byte från den aktuella strömmen och skriver dem till en annan dataström med en angiven buffertstorlek och annulleringstoken. Båda strömmarnas positioner avanceras av antalet kopierade byte. (Ärvd från Stream) |
| CopyToAsync(Stream, Int32) |
Läser asynkront byte från den aktuella strömmen och skriver dem till en annan ström med en angiven buffertstorlek. Båda strömmarnas positioner avanceras av antalet kopierade byte. (Ärvd från Stream) |
| CopyToAsync(Stream) |
Läser asynkront byte från den aktuella strömmen och skriver dem till en annan ström. Båda strömmarnas positioner avanceras av antalet kopierade byte. (Ärvd från Stream) |
| CreateObjRef(Type) |
Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt. (Ärvd från MarshalByRefObject) |
| CreateWaitHandle() |
Föråldrad.
Allokerar ett WaitHandle objekt. (Ärvd från Stream) |
| Dispose() |
Frigör de resurser som används av det här objektet. |
| Dispose() |
Släpper alla resurser som används av Stream. (Ärvd från Stream) |
| Dispose(Boolean) |
Släpper de ohanterade resurser som används av Stream och släpper eventuellt de hanterade resurserna. (Ärvd från Stream) |
| EndBatch() |
Tillåter att utlösare på serversidan återupptar avfyrning efter att ha utfört flera skrivåtgärder. |
| EndRead(IAsyncResult) |
Väntar på att den väntande asynkrona läsningen ska slutföras. (Överväg att använda ReadAsync(Byte[], Int32, Int32) i stället.) (Ärvd från Stream) |
| EndWrite(IAsyncResult) |
Avslutar en asynkron skrivåtgärd. (Överväg att använda WriteAsync(Byte[], Int32, Int32) i stället.) (Ärvd från Stream) |
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| Erase() |
Raderar alla data från den här OracleLob. |
| Erase(Int64, Int64) |
Raderar den angivna mängden data från den här OracleLob. |
| Flush() |
Stöds inte för närvarande. |
| FlushAsync() |
Rensar asynkront alla buffertar för den här strömmen och gör att buffrade data skrivs till den underliggande enheten. (Ärvd från Stream) |
| FlushAsync(CancellationToken) |
Rensar asynkront alla buffertar för den här strömmen, gör att buffrade data skrivs till den underliggande enheten och övervakar begäranden om annullering. (Ärvd från Stream) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetLifetimeService() |
Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen. (Ärvd från MarshalByRefObject) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| InitializeLifetimeService() |
Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen. (Ärvd från MarshalByRefObject) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| MemberwiseClone(Boolean) |
Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet. (Ärvd från MarshalByRefObject) |
| ObjectInvariant() |
Föråldrad.
Tillhandahåller stöd för en Contract. (Ärvd från Stream) |
| Read(Byte[], Int32, Int32) |
Läser en sekvens med byte från den aktuella OracleLob dataströmmen och flyttar positionen inom dataströmmen med antalet lästa byte. |
| ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Läser asynkront en sekvens med byte från den aktuella strömmen, avancerar positionen i strömmen med antalet lästa byte och övervakar begäranden om annullering. (Ärvd från Stream) |
| ReadAsync(Byte[], Int32, Int32) |
Läser asynkront en sekvens med byte från den aktuella strömmen och avancerar positionen i strömmen med antalet lästa byte. (Ärvd från Stream) |
| ReadByte() |
Läser en byte från strömmen och flyttar positionen i strömmen med en byte, eller returnerar -1 om i slutet av strömmen. (Ärvd från Stream) |
| Seek(Int64, SeekOrigin) |
Anger positionen på den aktuella OracleLob strömmen. |
| SetLength(Int64) |
Anger dataströmmens OracleLob längd till ett värde som är mindre än den aktuella längden. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |
| Write(Byte[], Int32, Int32) |
Skriver en sekvens med byte till den aktuella OracleLob strömmen och avancerar den aktuella positionen i den här strömmen med antalet skrivna byte. |
| WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Skriver asynkront en sekvens med byte till den aktuella strömmen, avancerar den aktuella positionen i den här strömmen med antalet skrivna byte och övervakar begäranden om annullering. (Ärvd från Stream) |
| WriteAsync(Byte[], Int32, Int32) |
Skriver asynkront en sekvens med byte till den aktuella strömmen och avancerar den aktuella positionen i den här strömmen med antalet skrivna byte. (Ärvd från Stream) |
| WriteByte(Byte) |
Skriver en byte till den aktuella positionen i OracleLob strömmen och flyttar positionen inom dataströmmen med en byte. |
| WriteByte(Byte) |
Skriver en byte till den aktuella positionen i strömmen och flyttar positionen inom strömmen med en byte. (Ärvd från Stream) |
Explicita gränssnittsimplementeringar
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Släpper alla resurser som används av Stream. (Ärvd från Stream) |