OracleLob Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Oracle sunucusunda depolanan büyük bir nesne ikili (LOB) veri türünü temsil eder. Bu sınıf devralınamaz.
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
- Devralma
- Uygulamalar
Açıklamalar
, OracleLob içindeki verinin işletim sistemindeki fiziksel bir dosya yerine sunucuda depolanmasından OracleBFile farklıdır. Her zaman salt okunur olan bir OracleBFilenesneden farklı olarak, bir okuma-yazma nesnesi de olabilir.
OracleLob bu OracleType veri türlerinden biri olabilir.
| OracleType veri türü | Açıklama |
|---|---|
Blob |
Boyutu en fazla 4 gigabayt (GB) olan ikili veriler içeren bir Oracle BLOB veri türü. Bu, türünde Arraybir Byte ile eşler. |
Clob |
Sunucuda varsayılan karakter kümesine göre karakter verileri içeren ve boyutu en fazla 4 GB olan bir Oracle CLOB veri türü. Bu, ile Stringeşler. |
NClob |
Maksimum boyutu 4 GB olan sunucuda ayarlanan ulusal karaktere göre karakter verileri içeren bir Oracle NCLOB veri türü. Bu, ile Stringeşler. |
.NET uygulama geliştiricisi Oracle LOB değerlerini Array ve Byte türünde String veya özel OracleLob veri türü gibi temel .NET veri türlerine alabilir. sınıfı, OracleLob Oracle veritabanında Oracle'dan veri okumayı ve Oracle'a LOB yazmayı destekler.
Temel .NET veri türlerinden ayıran OracleLob veri türünün ana özellikleri şunlardır:
Oracle
LOBveritabanından oracle değerini sınıfına OracleLob aldıktan sonra, açık bir işlemdeki verileri değiştirebilirsinizLOBve değişiklikleriniz doğrudan veritabanına yansıtılır. OracleLOBdeğerini türüne ArrayByteString veya türüne alır ve bu dizileri güncelleştirirseniz, değişiklikleriniz veritabanına yansıtılmaz.Bir değerin OracleLob öbeklerine
LOBerişmek için sınıfını kullandığınızda, Oracle veritabanından istemciye yalnızca bu öbek geçirilir. Bir değerin GetChars öbeklerineLOBerişmek için yöntemini kullandığınızda, değerin tüm içeriği Oracle veritabanından istemciye geçirilir.
Bir OracleLob nesne almak için yöntemini çağırın GetOracleLob .
Şu biçimi kullanarak NULL olan bir OracleLob oluşturabilirsiniz:
OracleLob myLob = OracleLob.Null;
Dim myLob As OracleLob = OracleLob.Null
Bu teknik öncelikle sunucudan döndürülen bir LOB değerin NULL olup olmadığını test etmek için kullanılır, örneğin gösterildiği gibi:
if (myLob == OracleLob.Null)
If (myLob = OracleLob.Null) Then
NULLLOB, başarılı olan ve her zaman sıfır bayt döndüren LOB sıfır bayt'a Read benzer şekilde davranır.
Null değer içeren bir LOB sütun seçildiğinde döndürür Null.
Geçici LOBbir elde etmeden önce bir işlem başlatmanız gerekir. Aksi takdirde, OracleDataReader veri daha sonra alınamayabilir.
DBMS_LOB çağırarak Oracle'da geçici LOB bir de açabilirsiniz. CREATETEMPORARY sistem saklı yordamı ve bir LOB çıkış parametresi bağlama. İstemci tarafında, geçici LOB bir tablo tabanlı LOBgibi davranır. Örneğin, geçici LOBgüncelleştirmek için bir işlem içine alınmalıdır.
Aşağıdaki örnekte geçici LOBbir açma işleminin nasıl yapılacağını gösterilmektedir:
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
Devralınan WriteByte yöntem, karakter verileriyle kullanıldığında başarısız olur ve bir InvalidOperationException oluşturulur. Write Bunun yerine bu yöntemi kullanın.
Geçici LOBs'ler yalnızca bağlantı kapatıldığında kapatılır, ancak havuza alma ve yük altındayken geçici LOBsn kapatılmaz. Bu, çağrılarak LOBgeçici tempLob.Dispose()değerinin atılmasıyla çözülebilir.
Alanlar
| Name | Description |
|---|---|
| Null |
Null OracleLob nesneyi temsil eder. |
Özellikler
| Name | Description |
|---|---|
| CanRead |
Akışın |
| CanSeek |
İleri ve geri arama işlemlerinin gerçekleştirilip gerçekleştirilemeyeceğini belirten bir değer alır. |
| CanTimeout |
Geçerli akışın zaman aşımına neden olup olmadığını belirleyen bir değer alır. (Devralındığı yer: Stream) |
| CanWrite |
Yazmanın desteklenip desteklenmediğine |
| ChunkSize |
Okuma/yazma işlemi sırasında sunucudan alınacak veya sunucuya gönderilecek en az bayt sayısını gösteren bir değer alır. |
| Connection |
öğesinin OracleConnection bu örneği tarafından kullanılan öğesini OracleLobalır. |
| IsBatched |
Yöntemini çağıran BeginBatch() bir uygulamanın olup olmadığını gösteren bir değer alır. |
| IsNull |
öğesinin bir akış olup olmadığını OracleLob gösteren bir Null değer alır. |
| IsTemporary |
öğesinin geçici OracleLobolup olmadığını |
| Length |
boyutunu OracleLobdöndüren bir değer alır. |
| LobType |
Veri türünü döndüren |
| Position |
Akıştaki geçerli okuma konumunu OracleLob alır. |
| ReadTimeout |
Akışın zaman aşımına uğramadan önce ne kadar süreyle okumayı deneyeceğini belirleyen bir değeri milisaniye cinsinden alır veya ayarlar. (Devralındığı yer: Stream) |
| Value |
Temel alınan değerin eşdeğeri ortak dil çalışma zamanı akış değerini alır. |
| WriteTimeout |
Akışın zaman aşımına uğramadan önce ne kadar süreyle yazmaya çalışacağını belirleyen bir değeri milisaniye cinsinden alır veya ayarlar. (Devralındığı yer: Stream) |
Yöntemler
| Name | Description |
|---|---|
| Append(OracleLob) |
Belirtilen |
| BeginBatch() |
Birden çok okuma işlemi gerçekleştirirken sunucu tarafı tetikleyicilerinin tetiklenmesini engeller. |
| BeginBatch(OracleLobOpenMode) |
Belirtilen erişim modunda birden çok okuma ve yazma işlemi gerçekleştirirken sunucu tarafı tetikleyicilerinin tetiklenmesini engeller. |
| BeginRead(Byte[], Int32, Int32, AsyncCallback, Object) |
Zaman uyumsuz bir okuma işlemi başlatır. (Bunun yerine kullanmayı ReadAsync(Byte[], Int32, Int32) düşünün.) (Devralındığı yer: Stream) |
| BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) |
Zaman uyumsuz bir yazma işlemi başlatır. (Bunun yerine kullanmayı WriteAsync(Byte[], Int32, Int32) düşünün.) (Devralındığı yer: Stream) |
| Clone() |
Özgün OracleLob nesneyle aynı Oracle'a |
| Close() |
Geçerli akışı kapatır ve akışla ilişkili kaynakları serbest bırakır. |
| Close() |
Geçerli akışı kapatır ve geçerli akışla ilişkili tüm kaynakları (yuvalar ve dosya tanıtıcıları gibi) serbest bırakır. Bu yöntemi çağırmak yerine akışın düzgün şekilde atıldığından emin olun. (Devralındığı yer: Stream) |
| CopyTo(Int64, OracleLob, Int64, Int64) |
Belirtilen miktarda veri ve kaynak uzaklığı içeren bir hedefe OracleLob bundan OracleLob kopyalanır. |
| CopyTo(OracleLob, Int64) |
Bu OracleLob kaynaktan belirtilen miktarda veri içeren bir hedefe OracleLob kopyalar. |
| CopyTo(OracleLob) | |
| CopyTo(Stream, Int32) |
Geçerli akıştan baytları okur ve belirtilen arabellek boyutunu kullanarak başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
| CopyTo(Stream) |
Geçerli akıştan baytları okur ve başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
| CopyToAsync(Stream, Int32, CancellationToken) |
Belirtilen arabellek boyutu ve iptal belirtecini kullanarak geçerli akıştan baytları zaman uyumsuz olarak okur ve başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
| CopyToAsync(Stream, Int32) |
Geçerli akıştan gelen baytları zaman uyumsuz olarak okur ve belirtilen arabellek boyutunu kullanarak başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
| CopyToAsync(Stream) |
Geçerli akıştan gelen baytları zaman uyumsuz olarak okur ve başka bir akışa yazar. Her iki akış konumu da kopyalanan bayt sayısına göre gelişmiştir. (Devralındığı yer: Stream) |
| CreateObjRef(Type) |
Uzak bir nesneyle iletişim kurmak için kullanılan bir ara sunucu oluşturmak için gereken tüm ilgili bilgileri içeren bir nesne oluşturur. (Devralındığı yer: MarshalByRefObject) |
| CreateWaitHandle() |
Geçersiz.
Geçersiz.
Geçersiz.
Bir WaitHandle nesne ayırır. (Devralındığı yer: Stream) |
| Dispose() |
Bu nesne tarafından kullanılan kaynakları serbest bırakır. |
| Dispose() |
tarafından Streamkullanılan tüm kaynakları serbest bırakır. (Devralındığı yer: Stream) |
| Dispose(Boolean) |
tarafından Stream kullanılan yönetilmeyen kaynakları serbest bırakır ve isteğe bağlı olarak yönetilen kaynakları serbest bırakır. (Devralındığı yer: Stream) |
| EndBatch() |
Birden çok yazma işlemi gerçekleştirdikten sonra sunucu tarafı tetikleyicilerinin tetiklemeye devam etmesine izin verir. |
| EndRead(IAsyncResult) |
Bekleyen zaman uyumsuz okumanın tamamlanmasını bekler. (Bunun yerine kullanmayı ReadAsync(Byte[], Int32, Int32) düşünün.) (Devralındığı yer: Stream) |
| EndWrite(IAsyncResult) |
Zaman uyumsuz yazma işlemini sonlandırır. (Bunun yerine kullanmayı WriteAsync(Byte[], Int32, Int32) düşünün.) (Devralındığı yer: Stream) |
| Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
| Erase() |
Bu OracleLobdosyadan tüm verileri siler. |
| Erase(Int64, Int64) |
Belirtilen miktarda veriyi bu OracleLobiçinden siler. |
| Flush() |
Şu anda desteklenmiyor. |
| FlushAsync() |
Bu akış için tüm arabellekleri zaman uyumsuz olarak temizler ve arabelleğe alınan verilerin temel alınan cihaza yazılmasına neden olur. (Devralındığı yer: Stream) |
| FlushAsync(CancellationToken) |
Bu akış için tüm arabellekleri zaman uyumsuz olarak temizler, arabelleğe alınan verilerin temel alınan cihaza yazılmasına neden olur ve iptal isteklerini izler. (Devralındığı yer: Stream) |
| GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
| GetLifetimeService() |
Geçersiz.
Bu örnek için yaşam süresi ilkesini denetleen geçerli yaşam süresi hizmet nesnesini alır. (Devralındığı yer: MarshalByRefObject) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| InitializeLifetimeService() |
Geçersiz.
Bu örneğin yaşam süresi ilkesini denetlemek için bir yaşam süresi hizmet nesnesi alır. (Devralındığı yer: MarshalByRefObject) |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| MemberwiseClone(Boolean) |
Geçerli MarshalByRefObject nesnenin sığ bir kopyasını oluşturur. (Devralındığı yer: MarshalByRefObject) |
| ObjectInvariant() |
Geçersiz.
için Contractdestek sağlar. (Devralındığı yer: Stream) |
| Read(Byte[], Int32, Int32) |
Geçerli OracleLob akıştan bir bayt dizisi okur ve okunan bayt sayısına göre akıştaki konumu ilerletir. |
| ReadAsync(Byte[], Int32, Int32, CancellationToken) |
Geçerli akıştan zaman uyumsuz olarak bir bayt dizisi okur, okunan bayt sayısına göre akış içindeki konumu ilerletir ve iptal isteklerini izler. (Devralındığı yer: Stream) |
| ReadAsync(Byte[], Int32, Int32) |
Geçerli akıştan zaman uyumsuz olarak bir bayt dizisi okur ve okunan bayt sayısına göre akış içindeki konumu ilerletir. (Devralındığı yer: Stream) |
| ReadByte() |
Akıştan bir bayt okur ve akışın içindeki konumu bir bayt ilerletir veya akışın sonundaysa -1 döndürür. (Devralındığı yer: Stream) |
| Seek(Int64, SeekOrigin) |
Geçerli OracleLob akış üzerindeki konumu ayarlar. |
| SetLength(Int64) |
Akışın OracleLob uzunluğunu geçerli uzunluktan daha küçük bir değere ayarlar. |
| ToString() |
Geçerli nesneyi temsil eden bir dize döndürür. (Devralındığı yer: Object) |
| Write(Byte[], Int32, Int32) |
Geçerli OracleLob akışa bir bayt dizisi yazar ve bu akıştaki geçerli konumu yazılan bayt sayısına göre ilerletir. |
| WriteAsync(Byte[], Int32, Int32, CancellationToken) |
Zaman uyumsuz olarak geçerli akışa bir bayt dizisi yazar, bu akıştaki geçerli konumu yazılan bayt sayısına göre ilerletir ve iptal isteklerini izler. (Devralındığı yer: Stream) |
| WriteAsync(Byte[], Int32, Int32) |
Zaman uyumsuz olarak geçerli akışa bir bayt dizisi yazar ve bu akıştaki geçerli konumu yazılan bayt sayısına göre ilerletir. (Devralındığı yer: Stream) |
| WriteByte(Byte) |
Akıştaki OracleLob geçerli konuma bir bayt yazar ve akıştaki konumu bir bayt ilerletir. |
| WriteByte(Byte) |
Akıştaki geçerli konuma bir bayt yazar ve akış içindeki konumu bir bayt ilerletir. (Devralındığı yer: Stream) |
Belirtik Arabirim Kullanımları
| Name | Description |
|---|---|
| IDisposable.Dispose() |
tarafından Streamkullanılan tüm kaynakları serbest bırakır. (Devralındığı yer: Stream) |