OracleBFile Класс

Определение

Представляет управляемый OracleBFile объект, предназначенный для работы с типом данных Oracle BFILE . Этот класс не наследуется.

public ref class OracleBFile sealed : System::IO::Stream, ICloneable, System::Data::SqlTypes::INullable
public sealed class OracleBFile : System.IO.Stream, ICloneable, System.Data.SqlTypes.INullable
type OracleBFile = class
    inherit Stream
    interface ICloneable
    interface IDisposable
    interface INullable
type OracleBFile = class
    inherit Stream
    interface ICloneable
    interface INullable
    interface IDisposable
Public NotInheritable Class OracleBFile
Inherits Stream
Implements ICloneable, INullable
Наследование
Реализации

Комментарии

Тип данных Oracle — это тип данных Oracle BFILELOB , содержащий ссылку на двоичные данные с максимальным размером 4 гигабайта. Oracle отличается от других типов данных Oracle BFILELOB , что его данные хранятся в физическом файле в операционной системе, а не на сервере. Обратите внимание, что BFILE тип данных предоставляет доступ только для чтения к данным. Поэтому методы, ориентированные на запись, унаследованные от Stream класса, не поддерживаются.

Другие характеристики BFILE типа данных, отличающие его от LOB типа данных, являются следующими:

  • содержит неструктурированные данные;

  • поддерживает обработку данных на сервере в виде фрагментов;

  • использует семантику ссылки. Например, если вы выполняете операцию копирования на объекте BFILE, копируется только BFILE указатель (ссылка на файл). Данные файла не копируются.

BFILE Тип данных должен использоваться для ссылокLOB, которые имеют большой размер и поэтому не являются практическими для хранения в базе данных. Существуют затраты на клиент, сервер и обмен данными для использования типа данных по сравнению с типом BFILELOB данных. Более эффективно получить доступ к доступу BFILE , если требуется получить только небольшой объем данных. Более эффективно получить весь объект для доступа к резидентным LOBбазам данных.

Каждый объект, отличный от NULL OracleBFile , связан с двумя сущностями, определяющими расположение базового физического файла:

  • Объект Oracle DIRECTORY, который является псевдонимом базы данных для каталога в файловой системе.

  • Имя файла базового физического файла, расположенного в каталоге, связанном с объектом DIRECTORY.

BFILE После создания указатель можно получить в виде OracleBFile объекта с помощью ExecuteReader методов или ExecuteScalar методов.

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

Физический OracleBFile файл, с которым связан объект, не должен существовать, пока не попытается получить к нему доступ. Приложение может привязать OracleBFile к несуществующему файлу, создать физический файл в ожидаемом расположении, а затем вызвать Read.

Любая попытка получить доступ к закрытому OracleBFile с помощью Read методов Seek повторно открывает OracleBFile поток автоматически.

В следующем примере C# показано, как создать BFILE таблицу Oracle, а затем получить ее в виде OracleBFile объекта. В примере демонстрируется использование OracleDataReader объекта и OracleBFileSeekRead методов.

private void GetOracleBFile(string connectionString)
{
    //Create and open the connection.
    using (OracleConnection connection = new OracleConnection(connectionString))
    {
        connection.Open();

        //Create and execute the commands.
        OracleCommand command = connection.CreateCommand();
        command.CommandText = "CREATE OR REPLACE DIRECTORY TestDir AS 'c:\\bfiles'";
        command.ExecuteNonQuery();
        command.CommandText = "CREATE TABLE TestTable(col1 number, col2 BFILE)";
        command.ExecuteNonQuery();
        command.CommandText = "INSERT INTO TestTable VALUES ('2', BFILENAME('TESTDIR', 'File.jpg'))";
        command.ExecuteNonQuery();
        command.CommandText = "SELECT * FROM TestTable";

        //Read the BFile data.
        byte[] buffer = new byte[100];
        OracleDataReader dataReader = command.ExecuteReader();
        using (dataReader)
        {
            if (dataReader.Read())
            {
                OracleBFile BFile = dataReader.GetOracleBFile(1);
                using (BFile)
                {
                    BFile.Seek(0, SeekOrigin.Begin);
                    BFile.Read(buffer, 0, 100);
                }
            }
        }
    }
    return;
}

Дополнительные сведения о создании и использовании Oracle BFILEсм. в соответствующей статье в документации Oracle.

Note

Методы BeginWriteи EndWriteWriteByteметоды, унаследованные от System.IO.Stream класса, не поддерживаются, так как BFILE тип данных доступен только для чтения.

Поля

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

Представляет пустой OracleBFile объект, который не привязан к физическому файлу.

Свойства

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

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

CanSeek

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

CanTimeout

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

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

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

Connection

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

DirectoryName

Возвращает имя объекта DIRECTORY, с которым OracleBFile связан объект.

FileExists

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

FileName

Получает имя BFILE без пути.

IsNull

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

Length

Возвращает значение, возвращающее длину в байтах физического файла, с которым OracleBFile связан объект.

Position

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

ReadTimeout

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

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

Array Возвращает типByte, содержащий OracleBFile данные.

WriteTimeout

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

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

Методы

Имя Описание
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

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

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

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

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

Создает копию этого OracleBFile объекта, связанного с тем же физическим файлом, что и исходный.

Close()

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

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

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

CopyTo(OracleLob, Int64)

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

CopyTo(OracleLob)

Копирует все содержимое этого OracleBFile объекта в начало назначения 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)
EndRead(IAsyncResult)

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

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

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

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

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

(Унаследовано от Object)
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)

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

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

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

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

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

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

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

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

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

SetFileName(String, String)

Привязывает объект к другому OracleBFile файлу в операционной системе.

SetLength(Int64)

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

ToString()

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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