Read
Overrides Stream
This instance method reads a specified amount of bytes from the ODP.NET LOB instance and populates the buffer.
Declaration
// C# public override int Read(byte[] buffer, int offset, int count);
Parameters
-
bufferThe byte array buffer to be populated.
-
offsetThe starting offset (in bytes) at which the buffer is populated.
-
countThe amount of bytes to read.
Return Value
The return value indicates the number of bytes read from the LOB.
Exceptions
ObjectDisposedException - The object is already disposed.
InvalidOperationException - The OracleConnection is not open or has been closed during the lifetime of the object.
ArgumentOutOfRangeException - This exception is thrown if any of the following conditions exist:
-
The
offsetor thecountparameter is less than0. -
The
offsetis greater than or equal to thebuffer.Length. -
The
offsetand thecounttogether are greater than thebuffer.Length.
Remarks
The LOB data is read starting from the position specified by the Position property.
Example
// C#
using System;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
class ReadSample
{
static void Main()
{
string constr = "User Id=scott;Password=tiger;Data Source=oracle";
OracleConnection con = new OracleConnection(constr);
con.Open();
OracleBlob blob = new OracleBlob(con);
// Write 3 bytes, starting at buffer offset 1
byte[] writeBuffer = new byte[4] {1, 2, 3, 4};
blob.Write(writeBuffer, 1, 3);
// Reset the Position for Read
blob.Position = 1;
// Read 2 bytes into buffer starting at buffer offset 1
byte[] readBuffer = new byte[4];
int bytesRead = blob.Read(readBuffer, 1, 2);
// Prints "bytesRead = 2"
Console.WriteLine("bytesRead = " + bytesRead);
// Prints "readBuffer = 0340"
Console.Write("readBuffer = ");
for(int index = 0; index < readBuffer.Length; index++)
{
Console.Write(readBuffer[index]);
}
Console.WriteLine();
blob.Close();
blob.Dispose();
con.Close();
con.Dispose();
}
}