[英]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.