sql >> データベース >  >> RDS >> Oracle

OracleCommandタイムアウト

    接続で複数のコマンドを実行しているわけではありません。2つのコマンドを順番に実行しています。最初のコマンドがタイムアウトすると、接続で保留中の他のコマンドはありません。コードは、最初のコマンドが成功するか、例外をスローするまで、実行のために2番目のコマンドを送信しません。

    引用したドキュメントの最後の段落は次のようになります。複数のOracleCommandオブジェクトが同じ接続を同時に使用する状況 、...

    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. PostgreSQL10でのICUサポートとのより堅牢な照合

    2. 文字セットと照合は正確にはどういう意味ですか?

    3. 多対多の関係を持つMySQLの制限

    4. 外部ライブラリのJarですが、コードにインポートできません