OracleLob Класс

Определение

Представляет большой двоичный () тип данных большого объекта,LOB хранящийся на сервере Oracle. Этот класс не наследуется.

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 заключается в том, что данные хранятся на сервере вместо того, чтобы храниться в физическом файле в операционной системе. Он также может быть объектом чтения и записи, в отличие OracleBFileот объекта, который всегда доступен только для чтения.

Может OracleLob быть одним из этих OracleType типов данных.

Тип данных OracleType Description
Blob Тип данных Oracle BLOB , содержащий двоичные данные с максимальным размером 4 гигабайта (ГБ). Это сопоставляется с типом ArrayByte.
Clob Тип данных Oracle CLOB , содержащий символьные данные на основе набора символов по умолчанию на сервере с максимальным размером 4 ГБ. Это сопоставляется с String.
NClob Тип данных Oracle NCLOB , содержащий символьные данные на основе национального набора символов на сервере с максимальным размером 4 ГБ. Это сопоставляется с String.

Разработчик приложений .NET может получить значения Oracle LOB в базовые типы данных .NET, например Array типа Byte и String или специализированный тип данных OracleLob. Класс OracleLob поддерживает чтение данных из Oracle и запись в базу данных Oracle LOB .

Ниже приведены основные характеристики типа данных OracleLob, которые отличают его от базовых типов данных .NET:

  • После получения значения Oracle из базы данных LOB Oracle OracleLob в класс можно изменить LOB данные в открытой транзакции, а изменения отражаются непосредственно в базе данных. Если вы извлекаете значение Oracle LOB в Array тип Byte или String обновляете эти массивы, изменения не отражаются в базе данных.

  • При использовании OracleLob класса для доступа к блоку значения только этот блок LOB передается из базы данных Oracle клиенту. При использовании GetChars метода для доступа к блоку LOB значения все содержимое значения передается из базы данных Oracle клиенту.

Чтобы получить OracleLob объект, вызовите GetOracleLob метод.

Вы можете создать значение OracleLob NULL с помощью этого формата:

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

Этот метод используется в основном для проверки того, является ли возвращенный LOB сервером значение NULL, как показано в этом примере:

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

Значение NULL LOB ведет себя так же, как и нулевой байт LOB , который Read выполняется успешно, и всегда возвращает нулевых байтов.

Выбор столбца LOB , содержащего возвращаемое Nullзначение NULL.

Перед получением временной транзакции необходимо начать транзакцию LOB. В противном случае может произойть сбой OracleDataReader получения данных позже.

Вы также можете открыть временное приложение LOB Oracle, вызвав DBMS_LOB. ХРАНИМая процедура CREATETEMPORARY и привязка выходного LOB параметра. На стороне клиента временный LOB режим ведет себя как табличное LOB. Например, чтобы обновить временный LOBобъект, он должен быть заключен в транзакцию.

В следующем примере показано, как открыть временное 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

Унаследованный WriteByte метод завершается ошибкой, если используется с символьными данными, и InvalidOperationException создается исключение. Используйте метод Write вместо этого.

LOBВременные s закрываются только при закрытии подключения, но при использовании пула и при загрузке временные LOBне закрываются. Это можно устранить, устранив LOBвременный tempLob.Dispose()метод, вызвав .

Поля

Имя Описание
Null

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

Свойства

Имя Описание
CanRead

Возвращает значение, указывающее, можно ли LOB считывать поток.

CanSeek

Возвращает значение, указывающее, могут ли выполняться операции прямого и обратного поиска.

CanTimeout

Возвращает значение, определяющее, может ли текущий поток истекает время ожидания.

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

Всегда возвращает значение true, независимо от того, поддерживает ли LOB запись или нет.

ChunkSize

Возвращает значение, указывающее минимальное количество байтов для извлечения или отправки на сервер во время операции чтения и записи.

Connection

Возвращает используемый OracleConnection этим экземпляром объекта OracleLob.

IsBatched

Возвращает значение, указывающее, вызывается ли приложение методом BeginBatch() .

IsNull

Возвращает значение, указывающее, является ли OracleLob поток потоком Null .

IsTemporary

Возвращает значение, указывающее, является ли OracleLob временным LOB.

Length

Возвращает значение, возвращающее размер OracleLobобъекта .

LobType

Возвращает значение, возвращающее LOB тип данных.

Position

Возвращает текущую позицию чтения в потоке OracleLob .

ReadTimeout

Возвращает или задает значение в миллисекундах, которое определяет, сколько времени поток попытается прочитать до истечения времени ожидания.

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

Возвращает значение потока среды cl language runtime эквивалентное базовому значению.

WriteTimeout

Возвращает или задает значение в миллисекундах, определяющее, сколько времени поток попытается записать до истечения времени ожидания.

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

Методы

Имя Описание
Append(OracleLob)

Добавляет данные из указанного LOB в текущий LOB.

BeginBatch()

Запрещает запуск триггеров на стороне сервера при выполнении нескольких операций чтения.

BeginBatch(OracleLobOpenMode)

Запрещает запуск триггеров на стороне сервера при выполнении нескольких операций чтения и записи в указанном режиме доступа.

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

Начинает асинхронную операцию чтения. (Рекомендуется использовать ReadAsync(Byte[], Int32, Int32) вместо этого.)

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

Начинает асинхронную операцию записи. (Рекомендуется использовать WriteAsync(Byte[], Int32, Int32) вместо этого.)

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

Создает новый OracleLob объект, ссылающийся на тот же Oracle LOB , что и исходный OracleLob объект.

Close()

Закрывает текущий поток и освобождает ресурсы, связанные с потоком.

Close()

Закрывает текущий поток и освобождает все ресурсы (например, сокеты и дескрипторы файлов), связанные с текущим потоком. Вместо вызова этого метода убедитесь, что поток правильно удален.

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

Копирует его OracleLob в место назначения OracleLob с указанным объемом данных и смещением источника.

CopyTo(OracleLob, Int64)

Копирует данные из этого OracleLob объекта в место назначения OracleLob с указанным объемом данных.

CopyTo(OracleLob)

Копирует данные из этого OracleLob объекта в место назначения OracleLob.

CopyTo(Stream, Int32)

Считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков расширены по количеству скопированных байтов.

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

Считывает байты из текущего потока и записывает их в другой поток. Обе позиции потоков расширены по количеству скопированных байтов.

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

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера и маркер отмены. Обе позиции потоков расширены по количеству скопированных байтов.

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

Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков расширены по количеству скопированных байтов.

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

Асинхронно считывает байты из текущего потока и записывает их в другой поток. Обе позиции потоков расширены по количеству скопированных байтов.

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

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
CreateWaitHandle()
Устаревшие..
Устаревшие..
Устаревшие..

Выделяет объект WaitHandle.

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

Освобождает ресурсы, используемые этим объектом.

Dispose()

Освобождает все ресурсы, используемые параметром Stream.

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

Освобождает неуправляемые ресурсы, используемые Stream и при необходимости освобождает управляемые ресурсы.

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

Позволяет триггерам на стороне сервера возобновить запуск после выполнения нескольких операций записи.

EndRead(IAsyncResult)

Ожидает завершения ожидающего асинхронного чтения. (Рекомендуется использовать ReadAsync(Byte[], Int32, Int32) вместо этого.)

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

Завершает асинхронную операцию записи. (Рекомендуется использовать WriteAsync(Byte[], Int32, Int32) вместо этого.)

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

Определяет, равен ли указанный объект текущему объекту.

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

Удаляет все данные из этого OracleLob.

Erase(Int64, Int64)

Удаляет указанный объем данных из этого OracleLob.

Flush()

Не поддерживается в текущей версии.

FlushAsync()

Асинхронно очищает все буферы для этого потока и приводит к записи всех буферных данных на базовое устройство.

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

Асинхронно очищает все буферы для этого потока, приводит к записи всех буферных данных на базовое устройство и отслеживает запросы на отмену.

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

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetLifetimeService()
Устаревшие..

Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра.

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

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

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

Создает неглубокую копию текущей Object.

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

Создает неглубокую копию текущего MarshalByRefObject объекта.

(Унаследовано от MarshalByRefObject)
ObjectInvariant()
Устаревшие..

Предоставляет поддержку Contract.

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

Считывает последовательность байтов из текущего OracleLob потока и перемещает позицию в потоке по числу байтов.

ReadAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно считывает последовательность байтов из текущего потока, перемещает положение в потоке по количеству операций чтения байтов и отслеживает запросы на отмену.

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

Асинхронно считывает последовательность байтов из текущего потока и перемещает позицию в потоке по числу байтов.

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

Считывает байт из потока и перемещает позицию в потоке по одному байту или возвращает -1, если в конце потока.

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

Задает позицию в текущем OracleLob потоке.

SetLength(Int64)

Задает длину OracleLob потока значением меньше текущей длины.

ToString()

Возвращает строку, представляющую текущий объект.

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

Записывает последовательность байтов в текущий OracleLob поток и перемещает текущую позицию в этом потоке по количеству записанных байтов.

WriteAsync(Byte[], Int32, Int32, CancellationToken)

Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию в этом потоке по количеству записанных байтов и отслеживает запросы на отмену.

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

Асинхронно записывает последовательность байтов в текущий поток и перемещает текущую позицию в этом потоке по количеству записанных байтов.

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

Записывает байт в текущую позицию в потоке OracleLob и перемещает позицию в потоке по одному байту.

WriteByte(Byte)

Записывает байт в текущую позицию в потоке и перемещает позицию в потоке по одному байту.

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

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

Имя Описание
IDisposable.Dispose()

Освобождает все ресурсы, используемые параметром Stream.

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

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