Olvasás angol nyelven

Megosztás a következőn keresztül:


Oracle BFIL-k

Az Oracle .NET-keretrendszer adatszolgáltatója tartalmazza az OracleBFile osztályt, amely az Oracle-adattípus BFile kezelésére szolgál.

Az Oracle BFILE adattípus egy Oracle LOB adattípus, amely legfeljebb 4 gigabájt méretű bináris adatokra mutató hivatkozást tartalmaz. Az Oracle BFILE abban különbözik a többi Oracle LOB-adattípustól , hogy az adatok fizikai fájlban vannak tárolva az operációs rendszerben, nem pedig a kiszolgálón. Vegye figyelembe, hogy a BFILE adattípus írásvédett hozzáférést biztosít az adatokhoz.

A BFILE adattípus egyéb jellemzői, amelyek megkülönböztetik a LOB adattípustól, a következők:

  • Strukturálatlan adatokat tartalmaz.

  • Támogatja a kiszolgálóoldali adattömb-készítést.

  • Hivatkozásmásolási szemantikát használ. Ha például másolási műveletet hajt végre egy BFILE-on, a program csak a BFILE keresőt (amely a fájlra mutató hivatkozás) másolja. A fájlban lévő adatok másolása nem történik meg.

A BFILE adattípust nagy méretű, ezért az adatbázisban való tárolásra nem célszerű hivatkozni. A BFILE adattípus és a LOB adattípus használata esetén további ügyfél-, kiszolgáló- és kommunikációs többletterhelések jelentkeznek. Hatékonyabb a BFILE elérése, ha csak kis mennyiségű adatot kell beszereznie. Ha a teljes objektumot le kell szereznie, hatékonyabb az adatbázis-rezidens LOB-k elérése.

Minden nem NULL értékű OracleBFile objektum két olyan entitáshoz van társítva, amelyek meghatározzák a mögöttes fizikai fájl helyét:

  1. Oracle DIRECTORY-objektum, amely a fájlrendszer egy könyvtárának adatbázis-aliasa, és

  2. A mögöttes fizikai fájl fájlneve, amely a CÍMTÁR-objektumhoz társított könyvtárban található.

Példa

Az alábbi C#-példa bemutatja, hogyan hozhat létre BFILE-t egy Oracle-táblában, majd hogyan kérdezheti le OracleBFile-objektum formájában. A példa az objektum és az OracleDataReader OracleBFile Keresési és Olvasási metódusok használatát mutatja be. Vegye figyelembe, hogy a minta használatához először létre kell hoznia egy "c:\bfiles" nevű könyvtárat és egy "MyFile.jpg" nevű fájlt az Oracle-kiszolgálón.

using System;  
using System.IO;  
using System.Data;  
using System.Data.OracleClient;  
  
public class Sample  
{  
   public static void Main(string[] args)  
   {  
      OracleConnection connection = new OracleConnection(  
        "Data Source=Oracle8i;Integrated Security=yes");  
      connection.Open();  
  
      OracleCommand command = connection.CreateCommand();  
      command.CommandText =
        "CREATE or REPLACE DIRECTORY MyDir as 'c:\\bfiles'";  
      command.ExecuteNonQuery();  
      command.CommandText =
        "DROP TABLE MyBFileTable";  
      try {  
        command.ExecuteNonQuery();  
      }  
      catch {  
      }  
      command.CommandText =
        "CREATE TABLE MyBFileTable(col1 number, col2 BFILE)";  
      command.ExecuteNonQuery();  
      command.CommandText =
        "INSERT INTO MyBFileTable values ('2', BFILENAME('MyDir', " +  
        "'MyFile.jpg'))";  
      command.ExecuteNonQuery();  
      command.CommandText = "SELECT * FROM MyBFileTable";  
  
        byte[] buffer = new byte[100];  
  
      OracleDataReader reader = command.ExecuteReader();  
      using (reader) {  
          if (reader.Read()) {  
                OracleBFile bFile = reader.GetOracleBFile(1);  
                using (bFile) {  
                  bFile.Seek(0, SeekOrigin.Begin);  
                  bFile.Read(buffer, 0, 100);  
              }  
          }  
      }  
  
      connection.Close();  
   }  
  
}  

Lásd még