sql >> Databasteknik >  >> RDS >> Oracle

OracleCommand timeout

Du har inte flera kommandon som körs på anslutningen, du har två kommandon som körs sekventiellt, efter varandra. När det första kommandot går ut, finns det inget annat kommando som väntar på anslutningen. Din kod skickar inte det andra kommandot för exekvering förrän det första kommandot antingen har lyckats eller har orsakat ett undantag.

Det sista stycket från dokumentationen du citerade bör lyda:I en situation där flera OracleCommand-objekt använder samma anslutning samtidigt , ...

static void Main(string[] args)
{
    using (var conn = new OracleConnection("Pooling=False;...")) // why?
    using (var cmd1 = conn.CreateCommand())
    using (var cmd2 = conn.CreateCommand())
    {
        cmd1.CommandText = "UPDATE employee SET empname = 'temp1' WHERE id = 1";
        cmd2.CommandText = "UPDATE employee SET empname = 'temp2' WHERE id = 2";
        cmd1.CommandTimeout = 30;
        cmd2.CommandTimeout = 30;

        conn.Open();

        // there are no commands on conn yet

        try { cmd1.ExecuteNonQuery(); } // cmd1 is the only command on conn
        catch (OracleException) { } // if timeout, no other command affected

        // cmd1 is no longer on conn

        try { cmd2.ExecuteNonQuery(); } // cmd2 is the only command on conn
        catch (OracleException) { } // if timeout, no other command affected

        // cmd2 is no longer on conn
    }
}



  1. Vilken rad (i ordning efter någon kolumn) i en tabell motsvarar en rad i en annan tabell?

  2. MySQL-tabellindexoptimering

  3. Hur skulle jag räkna MySQL(*) i Doctrine2?

  4. C# med Asp.net MySQL med OBDC gör att inloggning och registrering inte fungerar