2011-02-28 44 views
0

堆棧跟蹤顯示ExecuteReader是ExecuteScalar.While挖掘相關命令行爲的底層方法,我在下面找到了該帖子 - 指出readerbehaviour.default被讀者使用。使用ExecuteScalar()會導致使用「默認」CommandBehaviour調用ExecuteReader()?

Does ExecuteScalar() have any advantages over ExecuteReader()?

我知道,一個連接總是可以被關閉和設置顯式使用datareader.close(),datareader.dispose() - 提供的ExecuteReader(commandbehaviour.Closeconnection)被使用。另一方面,ExecuteReader(CommandBehaviour.Default)即使在關閉和/或丟棄數據注視器對象時也會保持底層連接的打開狀態。所以我的問題是,如果executablecalar使用默認行爲,我如何確保底層連接關閉,一旦標量值被檢索?

回答

1

C#使用語句是包含在該語言中的最好的東西之一。它不直接解決你的問題,但是如果你習慣使用它來包裝SQLConnections(以及任何實現IDisposable的其他類型),那麼你就不必擔心很多類型的事情......

using(SQLConnection connection = new SQLConnection(...)) 
{ 
} 
+0

謝謝羅蘭!使用陳述可能是最快和最簡單的方法。 – MZZ

+0

很高興喜歡它,using語句在C#中是絕對的寶石,應該比使用它更經常地使用它 – LorenVS

相關問題