Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Antrian Lanjutan Oracle dengan .Net

Saya tidak dapat membantu Anda dengan praktik terbaik, tetapi saya dapat membantu Anda dengan Antrian UDT. Sebelum Anda menangani antrian, Anda perlu membuat tipe kustom dari database ke dalam proyek C# Anda. Dengan asumsi Anda telah menginstal Visual Studio dan ODP.NET, Anda hanya perlu terhubung ke database melalui Server Explorer, cari UDT Anda, klik kanan dan pilih "Generate Custom Class..." Kelas-kelas ini dipetakan langsung ke UDT Anda dan digunakan untuk menyimpan informasi Dequeued.

Berikut adalah contoh kode yang akan Anda gunakan untuk mengantrekan pesan:

private void main(string[] args)
{
    string _connstring = "Data Source=host/DB;User
    Id=USER;Password=PASSWORD1;";

        OracleConnection _connObj = new OracleConnection(_connstring);

        // Create a new queue object
        OracleAQQueue _queueObj = new OracleAQQueue("UDT_NAME", _connObj);

        _connObj.Open();

        OracleTransaction _txn = _connObj.BeginTransaction();

        // Set the payload type to your UDT
        _queueObj.MessageType = OracleAQMessageType.Udt;
        _queueObj.UdtTypeName = "UDT_NAME";

        // Create a new message object
        OracleAQMessage _msg = new OracleAQMessage();

        // Create an instance of JobClass and pass it in as the payload for the
        // message
        UDT_CUSTOM_CLASS _custClass = new UDT_CUSTOM_CLASS();
        // Load up all of the properties of custClass
        custClass.CustString = "Custom String";
        custClass.CustInt = 5;

        _msg.Payload = custClass;

        // Enqueue the message
        _queueObj.EnqueueOptions.Visibility = OracleAQVisibilityMode.OnCommit;
        _queueObj.Enqueue(_msg);

        _txn.Commit();
        _queueObj.Dispose();
        _connObj.Close();
        _connObj.Dispose();
        _connObj = null;
}

Ini adalah proses yang mirip dengan dequeue:

private void main(string[] args)
{
    string _connstring = "Data Source=host/DB;User
    Id=USER;Password=PASSWORD1;";

    OracleConnection _connObj = new OracleConnection(_connstring);

    // Create a new queue object
    OracleAQQueue _queueObj = new OracleAQQueue("UDT_NAME", _connObj);

    // Set the payload type to your UDT
    _queueObj.MessageType = OracleAQMessageType.Udt;
    _queueObj.UdtTypeName = "UDT_NAME";

    _connObj.Open();

    OracleTransaction _txn = _connObj.BeginTransaction();

    // Dequeue the message.
    _queueObj.DequeueOptions.Visibility = OracleAQVisibilityMode.OnCommit;
    _queueObj.DequeueOptions.Wait = 10;
    OracleAQMessage _deqMsg = _queueObj.Dequeue();

    UDT_CUSTOM_CLASS data = (UDT_CUSTOM_CLASS)_deqMsg.Payload;

    // At this point, you have the data and can do whatever you need to do with it

    _txn.Commit();
    _queueObj.Dispose();
    _connObj.Close();
    _connObj.Dispose();
    _connObj = null;

}

Itu contoh "sederhana". Saya menarik sebagian besar dari Pro ODP.NET untuk Oracle Database 11g oleh Ed Zehoo. Ini adalah buku yang sangat bagus dan saya sangat merekomendasikannya untuk membantu Anda mendapatkan pemahaman yang lebih baik tentang seluk beluk semua hal OPD.NET. Anda dapat membeli eBuku di sini:http://apress.com/book/view/9781430228202 . Jika Anda memasukkan kode kupon MACWORLDOC, Anda bisa mendapatkan eBook seharga $21,00. Penawaran itu hanya bagus untuk eBook yang datang dalam format PDF yang dilindungi kata sandi. Saya harap ini membantu!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mencari karakter baris baru di tabel Oracle?

  2. Fungsi oracle add_months berbeda dari Java

  3. Mendapatkan lokasi dan nama file tabel eksternal?

  4. Oracle getConnection lambat

  5. SQL Query menggunakan dua tanggal