Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle Advanced Queuing с .Net

Не мога да ви помогна с най-добрите практики, но мога да ви помогна с UDT опашка. Преди да се справите с опашката, трябва да генерирате персонализирани типове от базата данни във вашия C# проект. Ако приемем, че имате инсталирани Visual Studio и ODP.NET, просто трябва да се свържете с базата данни чрез Server Explorer, да намерите вашите UDT, да щракнете с десния бутон и да изберете „Генериране на персонализиран клас...“ Тези класове се картографират директно към вашите UDT и се използват за съхраняване на информацията от опашката.

Ето пример за кода, който бихте използвали, за да поставите съобщение в опашка:

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;
}

Това е подобен процес на изваждане от опашка:

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;

}

Това е "прост" пример. Извадих повечето от това от Pro ODP.NET за Oracle Database 11g от Ed Zehoo. Това е отлична книга и силно я препоръчвам, за да ви помогне да разберете по-добре тънкостите на всички неща, свързани с OPD.NET. Можете да закупите електронната книга тук:http://apress.com/book/view/9781430228202 . Ако въведете кода на купона MACWORLDOC, можете да получите електронната книга за $21,00. Тази оферта е добра само за електронната книга, която се предлага в PDF формат, защитен с парола. Надявам се това да помогне!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка в съхранената процедура на Oracle при избор

  2. Известие за промяна на базата данни на Oracle

  3. Число на Oracle в C# десетичен знак

  4. SQL не е валиден месец

  5. Oracle XMLTYPE екстракт въз основа на стойност и състояние