簡體   English   中英

數據庫連接關閉在這里調用嗎?

[英]Is Close on database connection calling here?

我得到了這段代碼:

try
{
    using (OracleConnection c = new OracleConnection(globalDict[byAlias(connAlias)].connString))
    {
        c.Open();

        using (OracleCommand recordExistentQuery = new OracleCommand("regular.IsExistent", c))
        {
        // here working on oraclecommand
        }
    } 
 } catch(Exception exc) { }

OracleConnection是devArt dotConnect for Oracle的類。 這個代碼在它離開時會調用c.Close() (OracleConnection c = new OracleConnection(globalDict[byAlias(connAlias)].connString)) { .... }

不,它將調用Dipose() using塊將對using語句中指定的對象隱式調用Dispose()

但通常情況下,對於數據庫連接, Dispose()處理Close()功能,釋放保持連接的連接/ processId。

我還想補充一點,如果在//here working on oraclecommand (基本上在你的using(...){ }語句中的某個地方發生異常,也會調用Dispose()

按照設計,您應該可以對實現IDisposable的對象進行多次調用。 在您的情況下,在using代碼塊之后發出調用Close()的調用將無法執行任何操作,因為連接已關閉/已返回到池中。 在對象清理完之后的任何其他調用應該只返回並且什么都不做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM