OracleLob Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mewakili jenis data biner objek besar (LOB
) yang disimpan di server Oracle. Kelas ini tidak dapat diwariskan.
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
- Warisan
- Penerapan
Keterangan
Berbeda OracleLob dari OracleBFile di dalam bahwa data disimpan di server alih-alih dalam file fisik dalam sistem operasi. Ini juga bisa menjadi objek baca-tulis, tidak seperti OracleBFile, yang selalu baca-saja.
OracleLob Mungkin salah satu dari jenis data iniOracleType.
Jenis data OracleType | Deskripsi |
---|---|
Blob |
Jenis data Oracle BLOB yang berisi data biner dengan ukuran maksimum 4 gigabyte (GB). Ini memetakan ke Array jenis Byte. |
Clob |
Jenis data Oracle CLOB yang berisi data karakter, berdasarkan kumpulan karakter default di server, dengan ukuran maksimum 4 GB. Ini memetakan ke String. |
NClob |
Jenis data Oracle NCLOB yang berisi data karakter, berdasarkan kumpulan karakter nasional di server dengan ukuran maksimum 4 GB. Ini memetakan ke String. |
Pengembang aplikasi .NET dapat mengambil nilai Oracle LOB
ke dalam jenis data .NET dasar, seperti Array jenis Byte dan String, atau jenis data khusus OracleLob . Kelas OracleLob ini mendukung membaca data dari dan menulis ke Oracle LOB
di database Oracle.
Berikut ini adalah karakteristik utama dari OracleLob jenis data yang membedakannya dari jenis data .NET dasar:
Setelah Anda mengambil nilai Oracle
LOB
dari database Oracle ke kelas OracleLob , Anda dapat mengubahLOB
data dalam transaksi terbuka dan perubahan Anda langsung tercermin ke database. Jika Anda mengambil nilai OracleLOB
ke dalam Array jenis Byte atau String dan memperbarui array ini, perubahan Anda tidak tercermin ke database.Saat Anda menggunakan OracleLob kelas untuk mengakses potongan nilai, hanya potongan
LOB
tersebut yang diteruskan dari database Oracle ke klien. Saat Anda menggunakan GetChars metode untuk mengakses potonganLOB
nilai, seluruh konten nilai diteruskan dari database Oracle ke klien.
Untuk mendapatkan OracleLob objek, panggil GetOracleLob metode .
Anda dapat membuat null OracleLob menggunakan format ini:
OracleLob myLob = OracleLob.Null;
Dim myLob As OracleLob = OracleLob.Null
Teknik ini digunakan terutama untuk menguji apakah yang LOB
dikembalikan dari server adalah NULL, seperti yang diilustrasikan contoh ini:
if (myLob == OracleLob.Null)
If (myLob = OracleLob.Null) Then
NULL LOB
berperilaku mirip dengan byte LOB
nol yang Read berhasil dan selalu mengembalikan nol byte.
Memilih LOB
kolom yang berisi nilai null mengembalikan Null.
Anda harus memulai transaksi sebelum mendapatkan sementara LOB
. Jika tidak, OracleDataReader mungkin akan gagal mendapatkan data nanti.
Anda juga dapat membuka sementara LOB
di Oracle dengan memanggil DBMS_LOB. Prosedur tersimpan sistem CREATETEMPORARY dan mengikat LOB
parameter output. Di sisi klien, sementara LOB
bersifat seperti berbasis LOB
tabel . Misalnya, untuk memperbarui sementara LOB
, itu harus diapit dalam transaksi.
Contoh berikut menunjukkan cara membuka sementara 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();
Catatan
Metode yang diwariskan WriteByte gagal jika digunakan dengan data karakter, dan InvalidOperationException dilemparkan. Gunakan metode Write sebagai gantinya.
Sementara LOB
hanya ditutup ketika koneksi ditutup, tetapi dengan pengumpulan dan di bawah beban, sementara LOB
tidak ditutup. Ini dapat diselesaikan dengan membuang sementara LOB
, dengan memanggil tempLob.Dispose()
.
Bidang
Null |
Mewakili objek null OracleLob . |
Properti
CanRead |
Mendapatkan nilai yang menunjukkan apakah |
CanSeek |
Mendapatkan nilai yang menunjukkan apakah operasi pencarian ke depan dan mundur dapat dilakukan. |
CanTimeout |
Mendapatkan nilai yang menentukan apakah aliran saat ini dapat kehabisan waktu. (Diperoleh dari Stream) |
CanWrite |
Selalu mengembalikan true, terlepas dari apakah dukungan |
ChunkSize |
Mendapatkan nilai yang menunjukkan jumlah minimum byte untuk diambil dari atau dikirim ke server selama operasi baca/tulis. |
Connection |
Mendapatkan yang OracleConnection digunakan oleh instans ini dari OracleLob. |
IsBatched |
Mendapatkan nilai yang menunjukkan apakah aplikasi yang disebut BeginBatch() metode . |
IsNull |
Mendapatkan nilai yang menunjukkan apakah OracleLob itu Null aliran. |
IsTemporary |
Mendapatkan nilai yang menunjukkan apakah OracleLob adalah sementara |
Length |
Mendapatkan nilai yang mengembalikan ukuran OracleLob. |
LobType |
Mendapatkan nilai yang mengembalikan |
Position |
Mendapatkan posisi baca saat ini di OracleLob aliran. |
ReadTimeout |
Mendapatkan atau menetapkan nilai, dalam milidetik, yang menentukan berapa lama aliran akan mencoba membaca sebelum waktu habis. (Diperoleh dari Stream) |
Value |
Mendapatkan nilai aliran runtime bahasa umum yang setara dengan nilai yang mendasarinya. |
WriteTimeout |
Mendapatkan atau menetapkan nilai, dalam milidetik, yang menentukan berapa lama aliran akan mencoba menulis sebelum waktu habis. (Diperoleh dari Stream) |
Metode
Append(OracleLob) |
Menambahkan data dari yang ditentukan |
BeginBatch() |
Mencegah pemicu sisi server diaktifkan saat melakukan beberapa operasi baca. |
BeginBatch(OracleLobOpenMode) |
Mencegah pemicu sisi server diaktifkan saat melakukan beberapa operasi baca dan tulis dalam mode akses yang ditentukan. |
BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Memulai operasi baca asinkron. (Pertimbangkan untuk menggunakan ReadAsync(Byte[], Int32, Int32) sebagai gantinya.) (Diperoleh dari Stream) |
BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Memulai operasi tulis asinkron. (Pertimbangkan untuk menggunakan WriteAsync(Byte[], Int32, Int32) sebagai gantinya.) (Diperoleh dari Stream) |
Clone() |
Membuat objek baru OracleLob yang mereferensikan Oracle |
Close() |
Menutup aliran saat ini dan merilis sumber daya yang terkait dengan aliran. |
Close() |
Menutup aliran saat ini dan merilis sumber daya apa pun (seperti soket dan handel file) yang terkait dengan aliran saat ini. Alih-alih memanggil metode ini, pastikan aliran dibuang dengan benar. (Diperoleh dari Stream) |
CopyTo(Int64, OracleLob, Int64, Int64) |
Menyalin dari ini OracleLob ke tujuan OracleLob dengan jumlah data yang ditentukan, dan offset sumber. |
CopyTo(OracleLob) | |
CopyTo(OracleLob, Int64) |
Menyalin dari ini OracleLob ke tujuan OracleLob dengan jumlah data yang ditentukan. |
CopyTo(Stream) |
Membaca byte dari aliran saat ini dan menulisnya ke aliran lain. Kedua posisi aliran dilanjutkan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyTo(Stream, Int32) |
Membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer tertentu. Kedua posisi aliran dilanjutkan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyToAsync(Stream) |
Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain. Kedua posisi aliran dilanjutkan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyToAsync(Stream, CancellationToken) |
Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan token pembatalan tertentu. Kedua posisi aliran dilanjutkan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyToAsync(Stream, Int32) |
Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer tertentu. Kedua posisi aliran dilanjutkan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CopyToAsync(Stream, Int32, CancellationToken) |
Secara asinkron membaca byte dari aliran saat ini dan menulisnya ke aliran lain, menggunakan ukuran buffer dan token pembatalan tertentu. Kedua posisi aliran dilanjutkan dengan jumlah byte yang disalin. (Diperoleh dari Stream) |
CreateObjRef(Type) |
Membuat objek yang berisi semua informasi relevan yang diperlukan untuk menghasilkan proksi yang digunakan untuk berkomunikasi dengan objek jarak jauh. (Diperoleh dari MarshalByRefObject) |
CreateWaitHandle() |
Kedaluwarsa.
Kedaluwarsa.
Kedaluwarsa.
Mengalokasikan WaitHandle objek. (Diperoleh dari Stream) |
Dispose() |
Melepaskan sumber daya yang digunakan oleh objek ini. |
Dispose() |
Merilis semua sumber daya yang Streamdigunakan oleh . (Diperoleh dari Stream) |
Dispose(Boolean) |
Merilis sumber daya tidak terkelola yang digunakan oleh Stream dan secara opsional merilis sumber daya terkelola. (Diperoleh dari Stream) |
DisposeAsync() |
Secara asinkron merilis sumber daya yang tidak dikelola yang digunakan oleh Stream. (Diperoleh dari Stream) |
EndBatch() |
Memungkinkan pemicu sisi server untuk melanjutkan pengaktifan setelah melakukan beberapa operasi tulis. |
EndRead(IAsyncResult) |
Menunggu pembacaan asinkron yang tertunda selesai. (Pertimbangkan untuk menggunakan ReadAsync(Byte[], Int32, Int32) sebagai gantinya.) (Diperoleh dari Stream) |
EndWrite(IAsyncResult) |
Mengakhiri operasi penulisan asinkron. (Pertimbangkan untuk menggunakan WriteAsync(Byte[], Int32, Int32) sebagai gantinya.) (Diperoleh dari Stream) |
Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
Erase() |
Menghapus semua data dari ini OracleLob. |
Erase(Int64, Int64) |
Menghapus jumlah data yang ditentukan dari ini OracleLob. |
Flush() |
Saat ini tidak didukung. |
FlushAsync() |
Secara asinkron menghapus semua buffer untuk aliran ini dan menyebabkan data yang di-buffer ditulis ke perangkat yang mendasar. (Diperoleh dari Stream) |
FlushAsync(CancellationToken) |
Secara asinkron menghapus semua buffer untuk aliran ini, menyebabkan data yang di-buffer ditulis ke perangkat yang mendasar, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
GetLifetimeService() |
Kedaluwarsa.
Mengambil objek layanan seumur hidup saat ini yang mengontrol kebijakan seumur hidup untuk instans ini. (Diperoleh dari MarshalByRefObject) |
GetType() |
Mendapatkan dari instans Type saat ini. (Diperoleh dari Object) |
InitializeLifetimeService() |
Kedaluwarsa.
Mendapatkan objek layanan seumur hidup untuk mengontrol kebijakan seumur hidup untuk instans ini. (Diperoleh dari MarshalByRefObject) |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
MemberwiseClone(Boolean) |
Membuat salinan dangkal objek saat ini MarshalByRefObject . (Diperoleh dari MarshalByRefObject) |
ObjectInvariant() |
Kedaluwarsa.
Menyediakan dukungan untuk Contract. (Diperoleh dari Stream) |
Read(Byte[], Int32, Int32) |
Membaca urutan byte dari aliran saat ini OracleLob dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca. |
Read(Span<Byte>) |
Ketika ditimpa di kelas turunan, membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca. (Diperoleh dari Stream) |
ReadAsync(Byte[], Int32, Int32) |
Secara asinkron membaca urutan byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca. (Diperoleh dari Stream) |
ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Secara asinkron membaca urutan byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
ReadAsync(Memory<Byte>, CancellationToken) |
Secara asinkron membaca urutan byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
ReadAtLeast(Span<Byte>, Int32, Boolean) |
Membaca setidaknya jumlah minimum byte dari aliran saat ini dan memajukan posisi dalam aliran dengan jumlah byte yang dibaca. (Diperoleh dari Stream) |
ReadAtLeastAsync(Memory<Byte>, Int32, Boolean, CancellationToken) |
Secara asinkron membaca setidaknya jumlah minimum byte dari aliran saat ini, memajukan posisi dalam aliran dengan jumlah byte yang dibaca, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
ReadByte() |
Membaca byte dari aliran dan memajukan posisi dalam aliran dengan satu byte, atau mengembalikan -1 jika di akhir aliran. (Diperoleh dari Stream) |
ReadExactly(Byte[], Int32, Int32) |
|
ReadExactly(Span<Byte>) |
Membaca byte dari aliran saat ini dan memajukan posisi dalam aliran hingga |
ReadExactlyAsync(Byte[], Int32, Int32, CancellationToken) |
Secara asinkron membaca |
ReadExactlyAsync(Memory<Byte>, CancellationToken) |
Secara asinkron membaca byte dari aliran saat ini, memajukan posisi dalam aliran hingga |
Seek(Int64, SeekOrigin) |
Mengatur posisi pada aliran saat ini OracleLob . |
SetLength(Int64) |
Mengatur panjang OracleLob aliran ke nilai yang kurang dari panjang saat ini. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Write(Byte[], Int32, Int32) |
Menulis urutan byte ke aliran saat ini OracleLob , dan memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis. |
Write(ReadOnlySpan<Byte>) |
Ketika ditimpa di kelas turunan, menulis urutan byte ke aliran saat ini dan memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis. (Diperoleh dari Stream) |
WriteAsync(Byte[], Int32, Int32) |
Secara asinkron menulis urutan byte ke aliran saat ini dan memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis. (Diperoleh dari Stream) |
WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Secara asinkron menulis urutan byte ke aliran saat ini, memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
WriteAsync(ReadOnlyMemory<Byte>, CancellationToken) |
Secara asinkron menulis urutan byte ke aliran saat ini, memajukan posisi saat ini dalam aliran ini dengan jumlah byte yang ditulis, dan memantau permintaan pembatalan. (Diperoleh dari Stream) |
WriteByte(Byte) |
Menulis byte ke posisi saat ini di OracleLob aliran, dan memajukan posisi dalam aliran dengan satu byte. |
WriteByte(Byte) |
Menulis byte ke posisi saat ini di aliran dan memajukan posisi dalam aliran dengan satu byte. (Diperoleh dari Stream) |
Implementasi Antarmuka Eksplisit
IDisposable.Dispose() |
Merilis semua sumber daya yang Streamdigunakan oleh . (Diperoleh dari Stream) |
Metode Ekstensi
CopyToAsync(Stream, PipeWriter, CancellationToken) |
Secara asinkron membaca byte dari Stream dan menulisnya ke yang ditentukan PipeWriter, menggunakan token pembatalan. |