2009-09-22 55 views
3

我正在寫一個與本地sql server通信的服務器應用程序。每個查詢都有一個新的sql連接?

每個客戶端都需要讀取或寫入數據到數據庫。

它會更好有一個線程安全類將入隊和一個SQL連接上執行SQL命令?或者我應該爲每個命令打開一個新的連接?對性能來說它有多重要?

回答

6

如果您有一批具有後對方要執行的語句,你應該使用相同的SqlConnection。 只要您不再需要SqlConnection,並且您不知道何時需要再次連接,則應關閉連接。

所以,如果你要執行2條插入語句後對方一個更新語句,比如,你應該使用相同的SqlConnection。
這裏最重要的優點是,如果需要,您可以將這些聲明放入交易中。事務不能通過連接進行共享。

當您完成對數據庫的處理後,您可以關閉連接。默認情況下,使用連接池,並且連接將返回到池,以便下次連接到數據庫時可以重新使用它。 連接生存期應該很短,但不應爲每個DbCommand使用單獨的連接。

2

通常您應該爲每個命令創建一個新連接,並利用內置連接池。

+0

這是一個壞習慣...... – 2009-09-22 07:36:01

+0

我假設每個客戶端一次執行一個命令。所以我不明白什麼是壞習慣 – M4N 2009-09-22 07:41:45

6

如果使用ADO.NET的任何風味,連接池將自動使用(至少與SQL Server),除非您明確禁用它,所以沒有理由做任何特殊之處,。

一定要記住關閉連接中每一個用過之後 - 這將簡單地返回到連接池的連接。