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 из базы данных
LOBOracle OracleLob в класс можно изменитьLOBданные в открытой транзакции, а изменения отражаются непосредственно в базе данных. Если вы извлекаете значение OracleLOBв 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 |
Возвращает значение, указывающее, можно ли |
| CanSeek |
Возвращает значение, указывающее, могут ли выполняться операции прямого и обратного поиска. |
| CanTimeout |
Возвращает значение, определяющее, может ли текущий поток истекает время ожидания. (Унаследовано от Stream) |
| CanWrite |
Всегда возвращает значение true, независимо от того, поддерживает ли |
| ChunkSize |
Возвращает значение, указывающее минимальное количество байтов для извлечения или отправки на сервер во время операции чтения и записи. |
| Connection |
Возвращает используемый OracleConnection этим экземпляром объекта OracleLob. |
| IsBatched |
Возвращает значение, указывающее, вызывается ли приложение методом BeginBatch() . |
| IsNull |
Возвращает значение, указывающее, является ли OracleLob поток потоком Null . |
| IsTemporary |
Возвращает значение, указывающее, является ли OracleLob временным |
| Length |
Возвращает значение, возвращающее размер OracleLobобъекта . |
| LobType |
Возвращает значение, возвращающее |
| Position |
Возвращает текущую позицию чтения в потоке OracleLob . |
| ReadTimeout |
Возвращает или задает значение в миллисекундах, которое определяет, сколько времени поток попытается прочитать до истечения времени ожидания. (Унаследовано от Stream) |
| Value |
Возвращает значение потока среды cl language runtime эквивалентное базовому значению. |
| WriteTimeout |
Возвращает или задает значение в миллисекундах, определяющее, сколько времени поток попытается записать до истечения времени ожидания. (Унаследовано от Stream) |
Методы
| Имя | Описание |
|---|---|
| Append(OracleLob) |
Добавляет данные из указанного |
| 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 |
| 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) |