在析構函式中關閉 SqlConnection 連線

2021-09-08 21:50:49 字數 663 閱讀 6071

最近在模仿**搭乙個框架,該系統原本是用mysql資料庫的,在析構函式理關閉mysqlconnection連線沒有拋異常,可是我換成了sql server資料庫,在析構函式裡關閉 sqlconnection連線,異常丟擲來了:internal .net framework data provider error 1。

網上的有個說法是不要析構函式裡呼叫非託管型別。可是為什麼用mysqlconnection時沒事。還有另一種說法,把關閉連線(close())封裝成方法,呼叫那個方法就行。可是我本來就已經將關閉連線封裝了乙個方法,照樣是報錯。

後來終於找到乙個可行的解決辦法了:在原本有析構函式的類都實現idisposable介面,在dispose方法裡呼叫close()方法,呼叫該類時使用using語句塊。

**如下:

定義類時

public

class

dbcontroler:idisposable

///**略

}

呼叫類時

using (dbcontroler db = new

dbcontroler())

原本的析構函式可以去掉了。這樣就不會再拋"internal .net framework data provider error 1"這個異常了。

C 析構函式 虛析構函式

1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...

建構函式 析構函式 虛析構函式

說析構函式之前,先說下建構函式。建構函式用來完成對物件的一系列初始化操作,主要作用有 1.給建立的物件建立乙個識別符號 2.為物件資料成員開闢記憶體空間 3.完成物件資料成員的初始化 當並未顯示的定義建構函式時,會生成乙個預設的建構函式,預設建構函式不能完成物件資料成員的初始化,只能給物件建立一識別...

虛析構函式和析構函式中的虛機制

虛析構函式 虛析構函式是為了解決基類指標指向派生類物件,並用基類指標刪除派生類物件時能夠完全釋放記憶體。class a1 class a2 class b1 public a1 class b2 public a2 int main 一般來說,如果類中不包含虛函式,就表示這個類不作為基類使用。如果宣...