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 BFILE
— это тип данных Oracle LOB
, содержащий ссылку на двоичные данные с максимальным размером 4 гигабайта. Oracle BFILE
отличается от других типов данных Oracle LOB
тем, что его данные хранятся в физическом файле операционной системы, а не на сервере. Обратите внимание, что BFILE
тип данных предоставляет доступ только для чтения к данным. Поэтому методы, ориентированные на запись, наследуемые Stream от класса , не поддерживаются.
Другие характеристики BFILE
типа данных, которые отличают его от LOB
типа данных, в том, что он:
содержит неструктурированные данные;
поддерживает обработку данных на сервере в виде фрагментов;
использует ссылочную семантику копирования. Например, при выполнении операции
BFILE
копирования в копируется толькоBFILE
указатель (который является ссылкой на файл). Данные файла не копируются.
Тип BFILE
данных следует использовать для ссылок LOB
на объекты большого размера и, следовательно, непрактично хранить в базе данных. Для использования BFILE
типа данных существуют затраты на клиент, сервер и обмен данными по сравнению с типом LOB
данных. Доступ к объекту эффективнее 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 объекта и OracleBFileSeek методов и Read .
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.
Примечание
Методы BeginWrite
, EndWrite
и WriteByte
, которые наследуются от System.IO.Stream
класса , не поддерживаются, так как BFILE
тип данных доступен только для чтения.
Поля
Null |
Представляет пустой объект OracleBFile, который не привязан ни к какому файлу. |
Свойства
CanRead |
Получает значение, определяющее возможность чтения потока |
CanSeek |
Получает значение, показывающее, могут ли быть выполнены операции прямого и обратного поиска. |
CanTimeout |
Возвращает значение, которое показывает, может ли для данного потока истечь время ожидания. (Унаследовано от Stream) |
CanWrite |
Получает значение, показывающее, поддерживает ли объект запись. |
Connection |
Получает OracleConnection, используемый данным экземпляром OracleBFile. |
DirectoryName |
Получает имя объекта DIRECTORY, с которым связан объект OracleBFile. |
FileExists |
Получает значение, показывающее, существует ли в операционной системе файл, в котором содержатся данные типа |
FileName |
Получает имя |
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) |
Копирует все содержимое данного объекта OracleBFile в начало конечного объекта OracleLob. |
CopyTo(OracleLob, Int64) |
Копирует все содержимое из OracleBFile в конечный объект OracleLob с заданным смещением. |
CopyTo(Stream) |
Считывает байты из текущего потока и записывает их в другой поток. Обе позиции потоков перемещаются по количеству скопированных байтов. (Унаследовано от Stream) |
CopyTo(Stream, Int32) |
Считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков перемещаются по количеству скопированных байтов. (Унаследовано от Stream) |
CopyToAsync(Stream) |
Асинхронно считывает байты из текущего потока и записывает их в другой поток. Обе позиции потоков перемещаются по количеству скопированных байтов. (Унаследовано от Stream) |
CopyToAsync(Stream, CancellationToken) |
Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный токен отмены. Обе позиции потоков перемещаются по количеству скопированных байтов. (Унаследовано от Stream) |
CopyToAsync(Stream, Int32) |
Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера. Обе позиции потоков перемещаются по количеству скопированных байтов. (Унаследовано от Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
Асинхронно считывает байты из текущего потока и записывает их в другой поток, используя указанный размер буфера и токен отмены. Обе позиции потоков перемещаются по количеству скопированных байтов. (Унаследовано от Stream) |
CreateObjRef(Type) |
Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. (Унаследовано от MarshalByRefObject) |
CreateWaitHandle() |
Устаревшие..
Устаревшие..
Устаревшие..
Выделяет объект WaitHandle. (Унаследовано от Stream) |
Dispose() |
Освобождает все ресурсы, используемые данным объектом. |
Dispose() |
Освобождает все ресурсы, занятые модулем Stream. (Унаследовано от Stream) |
Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые объектом Stream, а при необходимости освобождает также управляемые ресурсы. (Унаследовано от Stream) |
DisposeAsync() |
Асинхронно освобождает неуправляемые ресурсы, используемые классом 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 и перемещает позицию внутри потока на число считанных байтов. |
Read(Span<Byte>) |
При переопределении в производном классе считывает последовательность байтов из текущего потока и перемещает позицию в потоке на число считанных байтов. (Унаследовано от Stream) |
ReadAsync(Byte[], Int32, Int32) |
Асинхронно считывает последовательность байтов из текущего потока и перемещает позицию внутри потока на число считанных байтов. (Унаследовано от Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены. (Унаследовано от Stream) |
ReadAsync(Memory<Byte>, CancellationToken) |
Асинхронно считывает последовательность байтов из текущего потока, перемещает позицию в потоке на число считанных байтов и отслеживает запросы отмены. (Унаследовано от Stream) |
ReadAtLeast(Span<Byte>, Int32, Boolean) |
Считывает по крайней мере минимальное количество байтов из текущего потока и перемещает позицию в потоке на число прочитанных байтов. (Унаследовано от Stream) |
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Асинхронно считывает по крайней мере минимальное количество байтов из текущего потока, перемещает позицию в потоке на число прочитанных байтов и отслеживает запросы отмены. (Унаследовано от Stream) |
ReadByte() |
Считывает байт из потока и перемещает позицию в потоке на один байт или возвращает -1, если достигнут конец потока. (Унаследовано от Stream) |
ReadExactly(Byte[], Int32, Int32) |
Считывает |
ReadExactly(Span<Byte>) |
Считывает байты из текущего потока и перемещает позицию в потоке |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Асинхронно считывает |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Асинхронно считывает байты из текущего потока, перемещает позицию в потоке |
Seek(Int64, SeekOrigin) |
Задает позицию в текущем потоке OracleBFile. |
SetFileName(String, String) |
Привязывает объект OracleBFile к другому файлу в операционной системе. |
SetLength(Int64) |
Не поддерживается в текущей версии. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Write(Byte[], Int32, Int32) |
Не поддерживается в текущей версии. |
Write(ReadOnlySpan<Byte>) |
При переопределении в производном классе записывает последовательность байтов в текущий поток и перемещает текущую позицию в нем вперед на число записанных байтов. (Унаследовано от Stream) |
WriteAsync(Byte[], Int32, Int32) |
Асинхронно записывает последовательность байтов в текущий поток и перемещает текущую позицию внутри потока на число записанных байтов. (Унаследовано от Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию внутри потока на число записанных байтов и отслеживает запросы отмены. (Унаследовано от Stream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Асинхронно записывает последовательность байтов в текущий поток, перемещает текущую позицию внутри потока на число записанных байтов и отслеживает запросы отмены. (Унаследовано от Stream) |
WriteByte(Byte) |
Записывает байт в текущее положение в потоке и перемещает позицию в потоке вперед на один байт. (Унаследовано от Stream) |
Явные реализации интерфейса
IDisposable.Dispose() |
Освобождает все ресурсы, занятые модулем Stream. (Унаследовано от Stream) |
Методы расширения
CopyToAsync(Stream, PipeWriter, CancellationToken) |
Асинхронно считывает байты из Stream и записывает их в указанный PipeWriter, используя токен отмены. |