我不明白常規連接和連接池之間的語法差異。.net連接池
當我使用using
鍵如:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
command.ExecuteNonQuery();
}
這是執行連接池的方式嗎?
我不明白常規連接和連接池之間的語法差異。.net連接池
當我使用using
鍵如:
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
command.ExecuteNonQuery();
}
這是執行連接池的方式嗎?
你可以閱讀關於連接池here。
基本上只要連接字符串是相同的(包括大小寫),連接將取自同一個連接池。
據我所知,
連接池是通過ado.net客戶管理,從做對數據庫連接是昂貴的操作。 ado.net創建連接池,當你需要連接時,它會嘗試從池中提供連接。即使你說客戶端代碼關閉連接,ado.net也會保留該連接以備後用。您不管理連接池
連接池在應用程序的web.config文件中被告知。當你使用使用語句時,你告訴該對象應該在使用結束時處置。
您不控制具有連接但具有連接字符串的連接池。大多數ADO提供程序使用默認情況下的池。
using
聲明用於調用對象的方法Dispose
(在本例中爲連接類)。通過這樣做,根據連接字符串配置,連接將返回到池或斷開連接。
如果正在使用分佈式事務(在.Net 4中使用TransactionScope
),您還應該知道連接不會直接返回到池中。交易完成/回滾時將返回連接。
如果你不使用using
,你應該確保您儘快撥打Connection.Close()
。特別是如果你的應用程序在某種形式的負載下。
連接池的管理是使用SqlConnection從上面抽象出來的。默認情況下,ADO.NET連接池處於打開狀態,您可以進一步控制它,例如將其關閉或控制連接字符串中的池大小,例如
關閉
Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Pooling=false;
或控制的最小和最大
Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Min Pool Size=5; Max Pool Size=20;
更多細節解釋和方法來驗證池 http://www.codeproject.com/KB/dotnet/ADONET_ConnectionPooling.aspx
連接池意味着一旦連接對象是然後打開然後再重新創建連接a再次Ado.Net存儲或緩存Pooler中的連接對象。 稍後如果有人打開連接,那麼它將不會執行它已經執行的一系列步驟,現在它只是從已經緩存的連接池中查找連接。
一旦我們完成對數據庫的操作,我們需要關閉連接,然後該連接將返回到池中,並準備好在下一次打開呼叫時重新使用該連接。
更多與連接池的最好的例子: - http://www.gurujipoint.com/2017/07/what-is-connection-pooling-in-aspnet.html