2014-10-01 81 views
-1

什麼SQL連接對象是什麼,當我們打開/關閉時會發生什麼?它消耗了什麼資源?爲什麼需要處理它(以c#/。net的形式)?什麼是SQL連接

+3

你讀過MSDN(尤其是備註部分)嗎? http://msdn.microsoft.com/en-us/library/System.Data.SqlClient.SqlConnection(v=vs.110).aspx你還應該閱讀所有關於[連接池](http:// msdn。 microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx)。 – 2014-10-01 10:04:51

+2

沒什麼比查看源代碼[SqlConnection.cs](http://referencesource.microsoft.com/#System.Data/data/System/Data/SqlClient/SqlConnection.cs)好運 – Steve 2014-10-01 10:06:34

+0

@tim是的,我有。文章只是說「這是一個代表會議的對象」。它是如何做到的?這個對象內部發生了什麼?請不要發送給我谷歌 - 我一直在那裏,我也一直在SO搜索引擎。 – 2014-10-01 10:08:33

回答

1

SqlConnection: 看看the MSDN page for SqlConnection。聲明:

SqlConnection對象表示SQL Server的唯一會話 數據源。使用客戶端/服務器數據庫系統時,它相當於 到服務器的網絡連接。

SqlConnection.Open:MSDN page on SqlConnection.Open,它指出:

關閉SqlConnection吸引了來自連接池打開的連接,如果 一個是可用的。否則,它建立到SQL Server實例的新連接。

SqlConnection.Close(和處置):

The MSDN page on SqlConnection.Close說:

Close方法回滾任何未決的事務。然後它釋放到連接池的連接,或者在連接池被禁用時關閉連接。

此外,在SqlConnection的頁面則指出:

如果的SqlConnection超出範圍,它不會被關閉。因此,您必須通過調用Close或Dispose來顯式關閉連接。 Close和Dispose在功能上是等效的。如果連接池值Pooling設置爲true或yes,則將底層連接返回到連接池。另一方面,如果將Pooling設置爲false或否,則與服務器的底層連接實際上是關閉的。

和:

爲了確保連接總是關閉,打開一個使用塊的內部的連接,如圖所示在下面的代碼片段。這樣做可確保在代碼退出塊時連接會自動關閉。

這應該回答你的問題。

編輯: 欲瞭解更多信息(也見於您的評論),您可以閱讀Connection-Pooling,當然也可以查看source code SqlConnection。

+0

感謝您的回答,@ tobypls。在「編輯」部分中的這兩個最後的鏈接正是我必須找到自己,但不知道如何制定我想獲得答案的問題。 – 2014-10-01 10:31:40

+0

Okey太棒了!如果我的回答中包含您正在搜索的內容,請不要忘記將其標記爲已接受。 – tobypls 2014-10-01 10:36:31

+0

所以實際上這個答案可以總結爲:rtfm ;-) – 2014-10-01 10:49:27

0

Sql連接對象,我們使用屬於System.Data.SqlClient命名空間的Sql連接類創建的對象。我們使用Sql Connection對象在sql server數據庫中執行sql命令。

Close和Dispose是兩個不同的東西。如果您關閉它,您可以重新使用該連接,但在處理之後不能重新連接。

在您需要之前打開連接並在完成您的需求後關閉連接總是一個好習慣。

在c#中,如果使用「using」語句創建連接,將會處理連接。