2009-10-21 103 views
2

我正在開發一個Windows Mobile WinForm應用程序,它使用Sql Server CE 3.1和.NET Compact Framework 2.0 SP2和C#。關於程序設計的問題

我有一個窗體,它有一個SqlCeConnection對象,在它的所有執行時間內打開:我在啓動時打開連接並在事件關閉時關閉它。

我也有一個類來讀取Sql Server CE數據庫。

我的問題是關於表現:這兩種情況哪一種最好?

當我創建讀取器類的一個對象,傳遞到構造器中的SqlCeConnection對象並保持到這個新對象的屬性。

2.總是,當我調用這個reader類的方法時,傳遞SqlCeConnection對象作爲參數。

我想如果我使用情況1,我有兩個SqlCeConnection對象,不是嗎?

如果您需要更多的細節,請告訴我。

謝謝!

回答

1

要回答最後一個問題,不要在場景1中有兩個不同的連接。您傳入的SqlCeConnection是一個引用,因此表單和reader類都引用了相同的基礎連接目的。

我其實並不認爲這兩種情況存在巨大差異。由於您要保持連接在表單的生命週期中保持打開狀態,因此如果您在此輔助類的構造函數或每種方法中傳遞該連接,那並不重要。所以我想只要做一個情景1就可以了,因爲每個呼叫的參數列表都比較小。

如果您嘗試最大限度地減少連接的生命週期,這將會很重要。例如,在連接到普通SQL Server的Windows桌面應用程序中,您不希望在表單的整個生命週期內保持打開連接,因爲如果許多人打開大量表單,則會出現性能問題你的服務器。因此,在這種情況下,您可以在最後一秒創建連接,將其傳遞到您的閱讀器例程以獲取數據並立即關閉它。情況2在這種情況下對你更好。

但是這種情況在移動應用程序中似乎並不重要。你可能是唯一一個連接到數據庫的人,所以你打開連接並不重要。

+0

我在某處讀過,如果我想要更好的性能,最好保持打開連接。 – VansFannel 2009-10-21 17:09:44

+0

我懷疑你會看到任何可測量的性能差異。在完整的SQL Server環境中,如果所有客戶端都保持大量連接打開狀態,那麼您絕對需要擔心性能下降。 – Clyde 2009-10-21 17:43:40

+0

是的,但這是一個單用戶場景。 – VansFannel 2009-10-22 08:17:21