2011-12-12 65 views
0

我在考慮構建一個方法,我可以通過connString來生成我的SqlConnection正在考慮構建一個SqlConnection方法......這是一個壞主意嗎?

這是一個壞主意嗎?如果我將自己的電話打包在他們自己的using (SqlConnection聲明中,它會更好嗎?

我們遇到了另一個應用程序的問題,其中一個開發人員傳遞了連接並保持打開狀態,這導致了很多悲傷。

只是想問問專家之前嘗試可能導致問題的事情。

+2

顯示你的計劃如何使用它的一個例子。 – Yuck

+0

與現有功能相比,這是一個非常好的主意。問題是:它夠了嗎?我與@Yuck:讓我們看看你想如何使用它。 –

+0

構建一個DataAccess類庫,該類庫公開實體或方法(如GetTable,ExecuteCommand等),但不會將此類類庫的任何細節公開給調用業務邏輯或UI(如果您懶惰並且不想創建BL類庫)。在DataAccess類中,如前所述,在每個連接周圍使用,當您檢索DataReader時,您不能在連接周圍使用using,但可以創建讀取器關閉時關閉連接的讀取器,在調用代碼中放置在讀者身邊使用。 –

回答

0

這是我用的是常見的模式,我認爲這是很好的:

using (var cn = new SqlConnection(DatabaseConnection.ConnectionStringToDb)) 
{ 
    using (var cmd = new SqlCommand("command string", cn)) 
    { 
      // your code 
    } 
} 

DatabaseConnection.ConnectionStringToDb是一個靜態輔助類的屬性創建獲取或存儲連接字符串。

+1

我使用類似的,但你可以做cn.CreateCommand(「select ...」)它更好 –

+1

是的..雖然你沒有[CreateCommand()](http://msdn.microsoft.com/ en-us/library/1756xwa3.aspx)這需要一個參數..我想這是一個錯字。 –

-1

請勿保持連接處於打開狀態。如果你在使用(SqlConnection con = new SqlConnection(...))的地方使用.Net使用連接池,其工作速度非常快。你可以閱讀在這裏http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

+0

我不認爲OP正在爭辯**,而贊成**保持連接暢通。事實上,他提到這樣做在另一個應用程序中造成了問題。 – Yuck

0

我想建立的是我可以在 CONNSTRING傳遞,以便生成我的SqlConnection的方法。這是一個不好的 的想法?

這是一個好主意。但微軟在SqlConnection的打敗你將它與此構造:

http://msdn.microsoft.com/en-us/library/d7469at0.aspx

+0

使用該示例何時關閉連接? ? – scarpacci

+1

@scarpacci - 在你的*建議實現下,連接什麼時候關閉。我們可以看到你的建議是一種方法,給定一個連接字符串,返回一個連接對象 - 這聽起來非常像'新的SqlConnection'正在做什麼...... –

相關問題