OracleLob Класс

Определение

Представляет двоичный тип данных больших объектов (LOB), хранящихся на сервере Oracle.Represents a large object binary (LOB) data type stored on an Oracle server. Этот класс не наследуется.This class cannot be inherited.

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
Наследование
Реализации

Комментарии

OracleLob ОтличаетсяOracleBFile от в том, что данные хранятся на сервере, а не в физическом файле в операционной системе.An OracleLob differs from an OracleBFile in that the data is stored on the server instead of in a physical file in the operating system. Он также может быть объектом, предназначенным для чтения и записи, OracleBFileв отличие от, который всегда доступен только для чтения.It can also be a read-write object, unlike an OracleBFile, which is always read-only.

Может быть одним из этих OracleType типов данных. OracleLobAn OracleLob may be one of these OracleType data types.

Тип данных OracleTypeOracleType data type ОписаниеDescription
Blob Тип данных BLOB Oracle, который содержит двоичные данные с максимальным размером 4 гигабайта (ГБ).An Oracle BLOB data type that contains binary data with a maximum size of 4 gigabytes (GB). Соответствует Array типа Byte.This maps to an Array of type Byte.
Clob Тип данных CLOB Oracle, который содержит символьные данные, основанный на кодировке по умолчанию на сервере, с максимальным размером 4 ГБ.An Oracle CLOB data type that contains character data, based on the default character set on the server, with a maximum size of 4 GB. Соответствует String.This maps to String.
NClob Тип данных NCLOB Oracle, который содержит символьные данные на основе набора национальных символов на сервере с максимальным размером 4 ГБ.An Oracle NCLOB data type that contains character data, based on the national character set on the server with a maximum size of 4 GB. Соответствует String.This maps to String.

Разработчик приложений .NET может извлекать значения Oracle LOB в базовые типы данных .NET, такие как Array тип Byte и String, или специализированный OracleLob тип данных.A .NET application developer can retrieve the Oracle LOB values into basic .NET data types, such as Array of type Byte and String, or the specialized OracleLob data type. Класс поддерживает чтение и запись данных в Oracle LOB в базе данных Oracle. OracleLobThe OracleLob class supports reading data from and writing to the Oracle LOB in the Oracle database.

Ниже приведены основные характеристики OracleLob типа данных, которые отличают его от основных типов данных .NET:The following are the main characteristics of an OracleLob data type that distinguish it from basic .NET data types:

  • После получения значения Oracle LOB из базы данных Oracle OracleLob в класс можно изменить LOB данные в открытой транзакции, и изменения будут непосредственно отражены в базе данных.After you retrieve the Oracle LOB value from the Oracle database into the OracleLob class, you can change the LOB data in an open transaction and your changes are directly reflected to the database. Если значение Oracle LOB извлекается Array в тип Byte или String и обновляются эти массивы, изменения не отражаются в базе данных.If you retrieve the Oracle LOB value into an Array of type Byte or String and update these arrays, your changes are not reflected to the database.

  • При использовании OracleLob класса для доступа к блоку LOB значения только этот блок передается клиенту из базы данных Oracle.When you use the OracleLob class to access a chunk of a LOB value, only that chunk is passed from the Oracle database to the client. При использовании GetChars метода для доступа к блоку LOB значения все содержимое значения передается клиенту из базы данных Oracle.When you use the GetChars method to access a chunk of a LOB value, the entire contents of the value are passed from the Oracle database to the client.

Чтобы получить OracleLob объект, GetOracleLob вызовите метод.To obtain an OracleLob object, call the GetOracleLob method.

Можно создать OracleLob , имеющий значение null, в следующем формате:You can construct an OracleLob that is NULL using this format:

OracleLob myLob = OracleLob.Null;  

Этот метод используется в основном для проверки того, LOB имеет ли возвращаемое с сервера значение null, как показано в следующем примере:This technique is used primarily to test whether a LOB returned from the server is NULL, as this example illustrates:

If(myLob == OracleLob.Null)  

Значение NULL LOB ведет себя так же, как нулевой байт LOB в, Read который завершается успешно и всегда возвращает нулевые байты.A NULL LOB behaves similarly to a zero-byte LOB in that Read succeeds and always returns zero bytes.

Выбор столбца, содержащего значение null, возвращает Null. LOBSelecting a LOB column that contains a null value returns Null.

Перед получением временной LOBтранзакции необходимо начать транзакцию.You must begin a transaction before obtaining a temporary LOB. В противном случае может произойти сбой при получении данных позже. OracleDataReaderOtherwise, the OracleDataReader may fail to obtain data later.

Можно также открыть временную LOB в Oracle, вызвав DBMS_LOB. Креатетемпорари системную хранимую процедуру и LOB привязку выходного параметра.You can also open a temporary LOB in Oracle by calling the DBMS_LOB.CREATETEMPORARY system stored procedure and binding a LOB output parameter. На стороне клиента временный характерен LOB , как и на основе LOBтаблиц.On the client side, a temporary LOB behaves like a table-based LOB. Например, чтобы обновить временную LOBоперацию, ее необходимо заключить в транзакцию.For example, to update the temporary LOB, it must be enclosed in a transaction.

В следующем C# примере показано, как открыть временную LOB.The following C# example demonstrates how to open a temporary LOB.

OracleConnection 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();  
OracleLob tempLob = (OracleLob)command.Parameters[0].Value;  
byte[] 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  

Примечание

Унаследованный WriteByte метод завершается ошибкой, если используется с символьными InvalidOperationException данными, и вызывается исключение.The inherited WriteByte method fails if used with character data, and an InvalidOperationException is thrown. Вместо этого рекомендуется использовать метод Write.Use the Write method instead.

Временные LOBs закрываются только при закрытии соединения, но при использовании пулов и при загрузке временная LOBнагрузка не закрывается.Temporary LOBs are only closed when the connection is closed, but with pooling and under load, temporary LOBs do not close. Это можно разрешить путем удаления временного LOB, tempLob.Dispose()вызвав.This can be resolved by disposing the temporary LOB, by invoking tempLob.Dispose().

Поля

Null

Представляет пустой объект OracleLob.Represents a null OracleLob object.

Свойства

CanRead

Получает значение, определяющее возможность чтения потока LOB.Gets a value indicating whether the LOB stream can be read.

CanSeek

Получает значение, показывающее, могут ли быть выполнены операции прямого и обратного поиска.Gets a value indicating whether forward and backward seek operations can be performed.

CanTimeout

Получает значение, которое показывает, может ли для данного потока истечь время ожидания.Gets a value that determines whether the current stream can time out.

(Унаследовано от Stream)
CanWrite

Всегда возвращает логическое значение ИСТИНА, независимо от того, поддерживает ли LOB запись или нет.Always returns true, regardless of whether the LOB supports writing or not.

ChunkSize

Получает значение, определяющее минимальное количество байтов, которое необходимо извлечь с сервера или отправить на сервер при выполнении операции чтения или записи.Gets a value indicating the minimum number of bytes to retrieve from or send to the server during a read/write operation.

Connection

Получает OracleConnection, используемый данным экземпляром OracleLob.Gets the OracleConnection used by this instance of the OracleLob.

IsBatched

Получает значение, определяющее, вызвало ли приложение метод BeginBatch().Gets a value indicating whether an application called the BeginBatch() method.

IsNull

Получает значение, определяющее, является ли OracleLob потоком Null.Gets a value that indicates whether the OracleLob is a Null stream.

IsTemporary

Получает значение, определяющее, является ли OracleLob временным LOB.Gets a value indicating whether the OracleLob is a temporary LOB.

Length

Получает значение, возвращающее размер OracleLob.Gets a value that returns the size of the OracleLob.

LobType

Получает значение, возвращающее тип данных LOB.Gets a value that returns the LOB data type.

Position

Получает текущую позицию чтения в потоке OracleLob.Gets the current read position in the OracleLob stream.

ReadTimeout

Возвращает или задает значение в миллисекундах, определяющее период, в течение которого поток будет пытаться выполнить операцию чтения, прежде чем истечет время ожидания.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Унаследовано от Stream)
Value

Получает эквивалент общеязыковой среды выполнения потока для базового значения.Gets the common language runtime stream value equivalent of the underlying value.

WriteTimeout

Возвращает или задает значение в миллисекундах, определяющее период, в течение которого поток будет пытаться выполнить операцию записи, прежде чем истечет время ожидания.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Унаследовано от Stream)

Методы

Append(OracleLob)

Добавляет данные из указанного LOB в текущий LOB.Appends data from the specified LOB to the current LOB.

BeginBatch()

Предотвращает срабатывание серверных триггеров при выполнении нескольких операций чтения.Prevents server-side triggers from firing while performing multiple read operations.

BeginBatch(OracleLobOpenMode)

Предотвращает срабатывание серверных триггеров при выполнении нескольких операций чтения и записи в указанном режиме доступа.Prevents server-side triggers from firing while performing multiple read and write operations in the specified access mode.

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

Начинает операцию асинхронного чтения.Begins an asynchronous read operation. (Рекомендуется использовать ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Унаследовано от Stream)
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Начинает операцию асинхронной записи.Begins an asynchronous write operation. (Рекомендуется использовать WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Унаследовано от Stream)
Clone()

Создает новый объект OracleLob, который ссылается на тот же LOB Oracle, что и исходный объект OracleLob.Creates a new OracleLob object that references the same Oracle LOB as the original OracleLob object.

Close()

Закрывает текущий поток и освобождает все ресурсы, связанные с данным потоком.Closes the current stream and releases resources that are associated with the stream.

CopyTo(Int64, OracleLob, Int64, Int64)

Копирует из данного объекта OracleLob в OracleLob, являющийся объектом назначения, с указанным объемом данных и смещением источника.Copies from this OracleLob to a destination OracleLob with the specified amount of data, and the source offset.

CopyTo(OracleLob)

Копирует из данного объекта OracleLob в объект назначения — OracleLob.Copies from this OracleLob to a destination OracleLob.

CopyTo(OracleLob, Int64)

Копирование из данного объекта OracleLob в объект назначения — OracleLob с указанным объемом данных.Copies from this OracleLob to a destination OracleLob with the specified amount of data.

CopyTo(Stream)

Считывает байты из текущего потока и записывает их в другой поток.Reads the bytes from the current stream and writes them to another stream.

(Унаследовано от Stream)
CopyTo(Stream, Int32)

Считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера.Reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Унаследовано от Stream)
CopyToAsync(Stream)

Асинхронно считывает байты из текущего потока и записывает их в другой поток.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Унаследовано от Stream)
CopyToAsync(Stream, CancellationToken)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный токен отмены.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Унаследовано от Stream)
CopyToAsync(Stream, Int32)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Унаследовано от Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера и токен отмены.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size and cancellation token.

(Унаследовано от Stream)
CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Унаследовано от MarshalByRefObject)
CreateWaitHandle()

Размещает объект WaitHandle.Allocates a WaitHandle object.

(Унаследовано от Stream)
Dispose()

Освобождает ресурсы, используемые данным объектом.Releases the resources that are used by this object.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом Stream, а при необходимости освобождает также управляемые ресурсы.Releases the unmanaged resources used by the Stream and optionally releases the managed resources.

(Унаследовано от Stream)
DisposeAsync()

Асинхронно освобождает неуправляемые ресурсы, используемые классом Stream.Asynchronously releases the unmanaged resources used by the Stream.

(Унаследовано от Stream)
EndBatch()

Позволяет серверным триггерам возобновить работу после выполнения нескольких операций записи.Allows server-side triggers to resume firing after performing multiple write operations.

EndRead(IAsyncResult)

Ожидает завершения отложенного асинхронного чтения.Waits for the pending asynchronous read to complete. (Рекомендуется использовать ReadAsync(Byte[], Int32, Int32).)(Consider using ReadAsync(Byte[], Int32, Int32) instead.)

(Унаследовано от Stream)
EndWrite(IAsyncResult)

Заканчивает операцию асинхронной записи.Ends an asynchronous write operation. (Рекомендуется использовать WriteAsync(Byte[], Int32, Int32).)(Consider using WriteAsync(Byte[], Int32, Int32) instead.)

(Унаследовано от Stream)
Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
Erase()

Удаляет все данные из этого OracleLob.Erases all data from this OracleLob.

Erase(Int64, Int64)

Удаляет заданный объем данных из этого OracleLob.Erases the specified amount of data from this OracleLob.

Flush()

В настоящее время не поддерживается.Not currently supported.

FlushAsync()

Асинхронно очищает все буферы для этого потока и вызывает запись всех буферизованных данных в базовое устройство.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Унаследовано от Stream)
FlushAsync(CancellationToken)

Асинхронно очищает все буферы данного потока, вызывает запись буферизованных данных в базовое устройство и отслеживает запросы отмены.Asynchronously clears all buffers for this stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

(Унаследовано от Stream)
GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

(Унаследовано от MarshalByRefObject)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Унаследовано от MarshalByRefObject)
ObjectInvariant()

Обеспечивает поддержку для Contract.Provides support for a Contract.

(Унаследовано от Stream)
Read(Byte[], Int32, Int32)

Считывает последовательность байтов из текущего потока OracleLob и перемещает позицию внутри потока на число считанных байтов.Reads a sequence of bytes from the current OracleLob stream and advances the position within the stream by the number of bytes read.

Read(Span<Byte>)

При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает позицию в потоке на число считанных байтов.When overridden in a derived class, reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Унаследовано от Stream)
ReadAsync(Byte[], Int32, Int32)

Асинхронно считывает последовательность байтов из текущего потока и перемещает позицию внутри потока на число считанных байтов.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Унаследовано от Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(Унаследовано от Stream)
ReadAsync(Memory<Byte>, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены.Asynchronously reads a sequence of bytes from the current stream, advances the position within the stream by the number of bytes read, and monitors cancellation requests.

(Унаследовано от Stream)
ReadByte()

Считывает байт из потока и перемещает позицию в потоке на один байт или возвращает -1, если достигнут конец потока.Reads a byte from the stream and advances the position within the stream by one byte, or returns -1 if at the end of the stream.

(Унаследовано от Stream)
Seek(Int64, SeekOrigin)

Задает позицию в текущем потоке OracleLob.Sets the position on the current OracleLob stream.

SetLength(Int64)

Задает длину потока OracleLob меньше текущей длины.Sets the length of the OracleLob stream to a value less than the current length.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)
Write(Byte[], Int32, Int32)

Записывает последовательность байтов в текущий поток OracleLob и перемещает текущую позицию внутри потока на число записанных байтов.Writes a sequence of bytes to the current OracleLob stream, and advances the current position within this stream by the number of bytes written.

Write(ReadOnlySpan<Byte>)

При переопределении в производном классе записывает последовательность байтов в текущий поток и перемещает текущую позицию в нем вперед на число записанных байтов.When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Унаследовано от Stream)
WriteAsync(Byte[], Int32, Int32)

Асинхронно записывает последовательность байтов в текущий поток и перемещает текущую позицию внутри потока на число записанных байтов.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Унаследовано от Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию внутри потока на число записанных байтов и отслеживает запросы отмены.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

(Унаследовано от Stream)
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию внутри потока на число записанных байтов и отслеживает запросы отмены.Asynchronously writes a sequence of bytes to the current stream, advances the current position within this stream by the number of bytes written, and monitors cancellation requests.

(Унаследовано от Stream)
WriteByte(Byte)

Записывает байт в текущее положение в потоке OracleLob, при этом позиция в потоке перемещается вперед на один байт.Writes a byte to the current position in the OracleLob stream, and advances the position within the stream by one byte.

Явные реализации интерфейса

IDisposable.Dispose()

Освобождает все ресурсы, занятые модулем Stream.Releases all resources used by the Stream.

(Унаследовано от Stream)

Применяется к